reactjs - SearchBar 在作为 props 以及来自它的父级的 setter 时不会更新值
问题描述
我希望“SearchBar”(反应原生元素)位于另一个组件中,父组件负责处理内容状态
const SearchScreen = () => {
const [term, setTerm] = useState('');
return (
<View>
<MySearchbar
placeholderText="Type your search..."
onTermChange={(text) => setTerm(text)}
term={term}
/>
</View>
);
};
MySearchBar 在哪里
const MySearchbar = ({ onTermChange, term, placeholderText }) => {
return (
<SearchBar
darkTheme
placeholder={placeholderText}
onTextChange={onTermChange}
value={term}
/>
);
};
使用这种方法,当我输入某些内容时,值会出现但会立即消失,就好像值项没有用新值更新一样
但是,如果我将 SearchBar 直接放在“SearchScreen”组件上,一切正常
为什么状态值“术语”没有更新?
拉斐尔
解决方案
您需要考虑的主要是调用渲染方法。尝试控制台记录搜索栏的设置器,您会看到由于父组件中的状态再次渲染后,它将更改道具,再次渲染并调用设置器。
我的方法是在搜索栏中设置相同的状态并将设置器更改为正确的命名法:onChangeText
推荐阅读
- clickhouse - 如何在 SQL 查询中使用 ClickHouse 分区值?
- javascript - 如何在 Vue3 中访问对象的“_value”属性
- typescript - typescript tsconfig、app.ts 和 app.js 文件在不同的文件夹中
- simulation - 如何在 ROS 和 Gazebo 上的 .SDF 机器人上使用 .URDF 传感器?
- javascript - 如何在 JavaScript 中为发布请求的正文创建文件属性?
- r - 使用模块并从列表中选择输入时缺少 R Shiny 反应性
- amazon-web-services - 使用 Boto3 时出错:请求中包含的安全令牌无效
- python - 有没有更快的方法来合并 python 中的两个集合?
- rust - 为什么 rust 火箭健康显示 404 未找到
- flutter - ScrollbarThemeData:小部件的样式不起作用