如何设置一个新的TextInput值?

时间:2019-03-05 22:07:42

标签: javascript reactjs ecmascript-6 redux

在用本地状态更改文本输入之前。像这样:

         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

1 个答案:

答案 0 :(得分:0)

用比我更好的人的话

  

将React用于短暂状态,此状态对应用程序而言并不重要,并且不会以复杂的方式进行更改。例如,在某些UI元素中切换,即表单输入状态。将Redux用于全局重要的状态或以复杂方式突变的状态。例如,缓存的用户或后期草稿。     -丹·阿布拉莫夫