reactjs - React Rerender 组件不起作用,无法读取未定义的属性“forceUpdate”
问题描述
如何让 forceUpdate() 重新渲染组件?我收到以下错误,无法读取未定义的属性“forceUpdate”
function App() {
const renderData = () => {
console.log('render');
this.forceUpdate();
}
return (
<div>
Test
<button onClick={renderData}> render data </button>
</div>
);
}
错误:
TypeError:无法读取未定义的属性“forceUpdate”
const renderData = () => {
console.log('render');
this.forceUpdate();
解决方案
this.forceUpdate()
仅在基于类的组件中可用
您可以通过更新状态来强制更新:
const [someVar, setSomeVar] = useState(null);
const renderData = () => {
console.log('render');
setSomeVar(true);
}
或者从这里获得灵感,创建自己的 forceUpdate 函数:
function useForceUpdate(){
const [value, setValue] = useState(0); // integer state
return () => setValue(value => value + 1); // update the state to force render
}
我强烈建议不要这样做,这表明您可能应该以不同的方式构建您的逻辑。
推荐阅读
- c++ - 如何修复 BCryptDecrypt 返回 0xC000003E (STATUS_DATA_ERROR)?
- android - AdMob 开始实施对 app-ads.txt 文件的支持
- sql - SQL 计数(最大值())
- python - 如何解决在 Windows 10 上安装 lightgbm gpu 的问题?
- r - 如何避免在ggplot的Y轴上舍入小数
- python - 如何使用 ParameterGrid 将多个列表作为输入,遍历所有组合并将结果输入到函数以测试所有选项
- ruby-on-rails - 带有 WHERE 子句的 Rails 索引操作
- linux - 从通过 WiFi 连接到同一路由器的 ESP32 查找通过 LAN 连接到路由器的设备的 IP 地址
- angular - 验证 ngfor 中的输入
- pyspark - pyspark中的Groupby