reactjs - 出现以下错误:无法对未安装的组件执行 React 状态更新
问题描述
我正在创建一个注册页面,当用户注册时,它应该转到主页,然后显示一条消息。
我实现它的方式如下:
- app.js 有一个名为 message 的状态
- 在返回语句中,我添加了
message && <div>{message}</div>
- 当用户单击提交时,调用 setMessage (通过道具传递)并且消息应该更改
- 重定向到主页,该主页具有
useEffect(() => {}, [props.location.pathname.split('/')[1]])
当我运行应用程序时,我收到以下错误:
Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
我做错了什么,我该如何解决?这是完整的代码:
应用程序.js
const [message, setMessage] = useState({});
return (
<div className='App'>
{message && message.text && (
<div>{message.text}</div>
)}
<Switch>
<Route
path='register'
component={props => (
<Register setMessage={setMessage}/>
)}
/>
<Route
path='/'
component={({ location }) => (
<MainContent
location={location}
/>
)}
/>
</Switch>
</div>
);
注册.js
const [shouldRedirect, setShouldRedirect] = useState(false);
const submitCallback = async credidentials => {
try {
// Post Data...
const message = { text: 'You Registered' };
setMessage(message);
setShouldRedirect(true);
} catch (error) {
console.log(error);
}
};
return (
{shouldRedirect && <Redirect to='/' />}
)
主页.jsx
useEffect(() => {
//FetchData
}, [urlPath]);
解决方案
推荐阅读
- android - Android:自我管理的ConnectionService,如何在自定义来电屏幕中实现动作
- excel - 试图将字符串转换为双精度
- python - Python Pandas loc keyerror
- laravel - 此路由不支持 PUT 方法。支持的方法:GET、HEAD
- python - pip安装失败,如何解决?
- javascript - Facebook live API - 将直播视频设置为公开
- laravel - Laravel Livewire,两个 livewire 组件之间的通信
- algorithm - 在不相交集联合(DSU)中,为什么我们在执行联合操作时将较小的子集作为较大子集的子集?
- javascript - 如何在路由/网址更改时更新 vue-meta?
- python - 如何用硒迭代hrefs?