在用本地状态更改文本输入之前。像这样:
state = {name: ''}
...
<AddEditFormInputs
onChangeText={name => this.setState({ name })}
textStateValue={this.state.name}
/>
这是组件,上面是我的称呼方式:
const AddEditFormInputs = ({
onChangeText,
textStateValue,
}) => (
<View style={styles.InputContainer}>
<TextInput
value={textStateValue}
onChangeText={onChangeText}
/>
</View>
);
但是现在我需要对Redux做同样的事情。我正在尝试这样做:
<AddEditFormInputs
onChangeText={name => editPassengerDataActionActionHandler({ name })}
textStateValue={editPassengerData.name}
/>
...
export default compose(
connect(
store => ({
editPassengerData: store.popupsModals.editPassengerData,
}),
dispatch => ({
editPassengerDataActionActionHandler: data => {
dispatch(editPassengerDataAction(data));
},
}),
),
)(PassengerFormModal);
我看到输入中包含editPassengerData.name
的值,但是当我尝试更改该值时,它会返回到旧值,就像我键入某些内容会删除我键入的内容一样。我知道这可能是因为我正在变异数据。但是,我该怎么做才能更改该输入的值?
应该仅在本地状态下使用,还是可以在Redux中使用它?
这是我正在使用的TextInput-> https://facebook.github.io/react-native/docs/textinput
答案 0 :(得分:0)
用比我更好的人的话
将React用于短暂状态,此状态对应用程序而言并不重要,并且不会以复杂的方式进行更改。例如,在某些UI元素中切换,即表单输入状态。将Redux用于全局重要的状态或以复杂方式突变的状态。例如,缓存的用户或后期草稿。 -丹·阿布拉莫夫