reactjs - 仅更新字符串数组时如何进行状态更新
问题描述
伙计们,我有以下示例代码:
const [data, setData] = useState([{question: '', option: ['']}]);
然后data和setData将传递给我的组件,例如:
<Question setData={setData} data={data}/>
我在问题组件中的代码是:
const handleAddOption = (questionIndex: number) => {
let newArray = data;
newArray.map((item: any, i: number) => {
if (i === questionIndex) {
newArray[questionIndex].options.push('');
}
});
setData(newArray);
};
问题是,如果我添加一个新的整个对象,它将“刷新”我的页面并显示,但是,当我像最后几行代码一样添加时,数组中只有一个新字符串,它不会“重新渲染”。
任何人都知道如何解决这个问题?
解决方案
- 好像你有错字
newArray[questionIndex].option.push('');
而不是newArray[questionIndex].options.push('');
- 但是如果它没有帮助尝试
forceUpdate();
更多细节你可以在这个答案中找到如何强制组件在 React 中使用钩子重新渲染?或者尝试使用这个包 https://github.com/CharlesStover/use-force-update
祝你好运 :)
推荐阅读
- c++ - 从文本文件 dlib c++ 中读取人脸向量
- python - python pandas时间序列计数先前匹配的数量
- html - VBA:getHTML 作为自定义函数 - 避免多次 HTML 检索
- azure - Azure 数据工厂 V2 ML Batch 执行 Web 服务中 GlobalParameters 中的动态内容
- java - 问题编译项目spring“无法在任何已知服务器上执行请求”
- sql - 使用事务插入父子记录[执行成功但未插入记录]
- android - 单击片段中回收器适配器中的项目时,显示自定义弹出窗口
- javascript - 从 url 中提取音频片段并使用纯 Web Audio API 播放
- python - Pandas:具有重复组到多列的列
- php - 如何在 Laravel 的资源目录中存储图像