为什么在将值传递给操作之前先对其进行突变,但未设置操作参数值?

问题描述 投票:0回答:1

我正在使用React Native构建一个应用程序。目前,我在将值传递给动作道具时遇到问题。

我在TextInput组件的onChangeText方法中有一个表单更新操作调用。更改文本后,我对文本进行突变并将其传递给更新操作,如下所示:

onChangeText={value => {
   let frequency = value + ' ' + this.state.frequencyTerm; 
   console.log(frequency) // this is not undefined but expected value
   this.props.reminderFormUpdate({prop: 'frequency', frequency});
}

但是,当我检查传递给hinterFormUpdate函数的值(简单的console.log语句)时,它说该值是不确定的。我还记录了频率值,然后将其传递给动作,它是正确的值。那为什么会这样呢?

我发现如果不更改从TextInput接收的值,并将行更改为:

this.props.reminderFormUpdate({prop: 'frequency', value});

操作收到的值不再是不确定的,但是显然这不是我想要设置频率道具的值。如果在将值传递给函数之前不进行更改,则该动作也可以完美地适用于其他道具,但是为什么不能更改该值呢?

这是我的hinterFormUpdate函数(该函数可以与其他道具一起正常工作,所以我认为这不是问题所在:]

export const reminderFormUpdate = ({prop, value}) => {
   return {
      type: 'REMINDER_FORM_UPDATE',
      payload: {prop, value},
   };
};

感谢您的帮助:-)

react-native action onchange reducers
1个回答
0
投票
在此代码块中,“值”表示传递的对象的属性。因此,prop和value不仅仅是常规的函数参数。它们是属性名称。这称为“
对象解构”。 more info

所以,这里要做什么?更改值时,您将其作为“频率”传递给了函数。而且,当您在hinterFormUpdate中解构传递的对象时,您仍在寻找属性“值”。但是现在是“频率”。

所以您应该这样:

this.props.reminderFormUpdate({prop: 'frequency',value: frequency});

或在您的hinterFormUpdate函数中更改它:

export const reminderFormUpdate = ({prop, frequency}) => {

返回{类型:“ REMINDER_FORM_UPDATE”,有效负载:{prop,frequency},};};

希望这会有所帮助。
© www.soinside.com 2019 - 2024. All rights reserved.