reactjs - 反应输入值在子组件中不起作用
问题描述
我有两个组件。子组件将在模态框中打开。模态框组件将包含添加和编辑用户。我已经为模式框输入传递了一些值,并在 getDerivedStateFormProps 生命周期挂钩中获取了该值。最初它将值填充到输入值。但在那之后,如果在文本框中输入任何内容,则状态不会更新。请参阅下面的详细信息
static getDerivedStateFromProps(props, state) {
state.show = props.show;
state.company = props.company;
return state;
}
onChange = async(e) => {
this.setState({company: {...this.state.company, [e.target.name]: e.target.value}});
}
但是状态没有更新。任何人都可以提供帮助来解决这个问题。提前致谢。
解决方案
不要改变state
参数。
的正确用法getDerivedStateFromProps
是返回一个浅合并到组件现有state
.
static getDerivedStateFromProps(props) {
const {show, company} = props;
return {show, company};
}
此外,在getDerivedStateFromProps
将您的调用中的状态应用于. 这意味着对in的任何更改都会破坏对in的更改。this.setState
company
getDerivedStateFromProps
company
this.setState
推荐阅读
- javascript - 为什么在引导表中导出 csv 不起作用
- google-chrome-extension - 在除一个域之外的每个域上运行 Chrome 扩展程序?
- javascript - 微软图形 API。用户注销后自动登录问题
- docker - 对链接到 docker repo (0x Launch Kit) 的前端 repo 进行更改
- ios - Flutter 找不到 FirebaseCore.h
- python - 以灵活的方式更改 Pandas Python 中的多个值
- python - 使用 ProcessPoolExecutor 在进程之间共享谷歌云存储客户端
- cordova - 断言:动画时应该调用 _before()
- typescript - 基于传递的布尔参数的返回类型
- bigcommerce - Bigcommerce 是否可以将所有 bigcommerce 文件拉到本地环境中,以便我可以在本地测试更改?