我正在使用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},
};
};
感谢您的帮助:-)
对象解构”。 more info所以,这里要做什么?更改值时,您将其作为“频率”传递给了函数。而且,当您在hinterFormUpdate中解构传递的对象时,您仍在寻找属性“值”。但是现在是“频率”。
所以您应该这样:
this.props.reminderFormUpdate({prop: 'frequency',value: frequency});
或在您的hinterFormUpdate函数中更改它:
export const reminderFormUpdate = ({prop, frequency}) => {
返回{类型:“ REMINDER_FORM_UPDATE”,有效负载:{prop,frequency},};};
希望这会有所帮助。