javascript - React Hooks:传递状态道具不是函数吗?
问题描述
我将状态挂钩作为道具传递给我的组件,我的“setCity”工作得非常好,但是当我尝试实现 setFlag 时,我收到一条错误消息“Searchbar.jsx:15 Uncaught TypeError: setFlag is not a function”
那么为什么我可以设置城市的值但不能设置标志呢?我将道具从“应用程序”传递到“页脚”,然后传递到“搜索栏”。
function App(){
const [city, setCity] = useState("");
const [flag, setFlag] = useState("");
return (
<div className='container'>
<Header className='header' />
<Body className='body' city={city} flag={flag}/>
<Footer className='footer' setCity={setCity} setFlag={setFlag}/>
</div>
);
}
function Footer({setCity}, {setFlag}){
return(
<div className='footer'>
Footer
<Searchbar className='searchbar' setCity={setCity} setFlag={setFlag}/>
</div>
)
}
function Searchbar({setCity}, {setFlag}){
handleChange = (e) =>{
e.preventDefault();
console.log(e.target.value);
setCity(e.target.value);
}
handleSubmit = (e) => {
e.preventDefault();
console.log("submitted");
setFlag(false);
}
return(
<div className='searchbar'>
<form>
<select defaultValue="default" onChange={handleChange}>
<option value="default" disabled>Choose a state...</option>
<option value="Alabama">Alabama</option>
<option value="Alaska">Alaska</option>
...
</select>
<button type="button" onClick={handleSubmit}>Search</button>
</form >
</div>
);
};
解决方案
所有的道具都作为组件的第一个参数传递,
function Searchbar({setCity}, {setFlag}){
应该
function Searchbar({setCity, setFlag}){
同样申请Footer
推荐阅读
- php - 如何在 PHP 中使用 Mongo 查询?
- r - 删除字符串的开头和结尾,直到它在 R 中找到一个模式
- c# - 在 Unity 中拍摄动画
- deep-learning - 具有可变长度输入的时间序列预测
- angular - 无法在角度 7 中路由到孩子
- c# - 在 DomainUpDown 中将文本转换为数字
- sql - 在 Oracle 12c 中遇到符号 v_PrepareStmt
- c# - 有没有办法防止 ListViewItems 变成 MS.Internal.NamedObject 或从中恢复
- mysql - 如何两次加入同一个表
- java - Java Apache Spark flatMaps 和数据整理