javascript - React.js 功能组件中如何将子组件状态传递给父组件状态?
问题描述
我想将子组件传递state
给父组件state
,我在类基组件中完成过一次,但在功能组件中,它不再起作用了。
下面是我的模型:
那就是组件
const Search = () => {
return(
<div>
<h1>Search Anything</h1>
<form>
<InuptForm />
<input type="submit">Search</input>
</form>
</div>
);
}
const InuptForm = () => {
const [search, setSearch] = React.useState('');
const handleChange = (e) => {
setSearch(e.target.value);
}
return(
<div>
<h1>Search Anything</h1>
<form>
<input type="text" name="search" value={search} onChange={handleChange} />
</form>
</div>
);
}
或者有没有机会使用
useReducer
钩子来解决这个问题?
如果有人可以提供帮助,我将不胜感激。
谢谢
解决方案
你不能在 React 中向上传递状态。它是单向的。如果你想要父母的状态,你需要“提升状态”。这意味着将它放在父组件中
做这样的事情:
const Search = ({ handleChange }) => {
return(
<div>
<h1>Search Anything</h1>
<form>
<input type="submit" onChange={handleChange}>Search</input>
</form>
</div>
);
}
const InuptForm = () => {
const [search, setSearch] = React.useState('');
const handleChange = (e) => {
setSearch(e.target.value);
}
return(
<div>
<Search handleChange={handleChange} />
</div>
);
}
我<Search />
在<InputForm />
这里渲染,然后传递handleChange
道具
推荐阅读
- php - 如何为 WordPress 插件或主题添加自动更新功能
- pandas - Pandas 中的 EWM 用于时间序列转换
- node.js - 如何使用服务帐户密钥文件调用受限的 firebase 函数?
- c - 无法从 Turbo C 中读取文件
- python - 我如何将图像用作按钮功能(Tkinter)
- python - 打印字典时出现KeyError?
- r - 如何在 r 中跨时间绘制多个组?
- python - Tensorflow:将张量列设置为无穷大
- swift - 如何通过访问 API 端点来解码 JSON 数据?
- informatica - Informatica 过滤器转换条件为 TRUE,没有任何文件