首页 > 解决方案 > 如何设置新的 TextInput 值?

问题描述

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

         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

标签: javascriptreactjsecmascript-6redux

解决方案


用比我更好的人的话来说

将 React 用于与全局应用无关且不会以复杂方式发生变化的短暂状态。例如,某些 UI 元素中的切换、表单输入状态。将 Redux 用于全局重要或以复杂方式发生变异的状态。例如,缓存的用户或草稿。——丹·阿布拉莫夫


推荐阅读