javascript - 如何设置新的 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
解决方案
用比我更好的人的话来说
将 React 用于与全局应用无关且不会以复杂方式发生变化的短暂状态。例如,某些 UI 元素中的切换、表单输入状态。将 Redux 用于全局重要或以复杂方式发生变异的状态。例如,缓存的用户或草稿。——丹·阿布拉莫夫
推荐阅读
- php - htaccess https://example.com/dash/something 链接重定向问题
- android - Flutter 应用无法在某些设备上运行
- json - 不使用序列化程序的 crud 操作
- python - 使用 KivyMD 构建接口时如何修复“AttributeError: 'NoneType' object has no attribute 'rgba'”?
- java - 如何在 toString() 方法中返回 2 前导 0?
- xslt - 序列是如何拼接的,为什么我的变量值是文档节点?
- reactjs - 图像在本地服务器上运行良好,但无法在远程服务器上加载?
- rest - 单个令牌是否可以防止 RESTful API 中的 csrf?
- php - laravel eloquent whereIn 子句中可以使用的数组的最大大小是多少?
- c# - 实体框架连接来自两个不同实体的表