- 11
- 0
问题描述
redux修改state相关组件没有更新
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
//redux.js
let initState = {
toggle: false,
}
export function counter(state=initState, action) {
let stateCopy = {...state}
switch (action.type) {
case toggle:
stateCopy.toggle?stateCopy.toggle=false:stateCopy.toggle=true;
return stateCopy;
default:
//初始状态
return stateCopy;
}
}
//action creator 创建action
export function toggle() {
return {type:toggle}
}
//index.js
import Siderbar from './pages/layout/sidebar';
import { createStore } from "redux";
import {counter,open,close,toggle} from './redux';
import './App.css';
const store = createStore(counter);
console.log(store.getState(),'store')
ReactDOM.render(
<Router>
<div className='wrapper'>
<div className='siderbar'><Siderbar store={store}/></div>
<div className='main'>
<div className='header'><Header store={store} toggle={toggle}/></div>
<div className='content'>
<Route path='/page1' component={Page1} />
<Route path='/page2' component={Page2} />
</div>
</div>
</div>
</Router>, document.getElementById('root'));
//header.js
import React from 'react';
class Header extends React.Component{
render(){
const store = this.props.store;
const isCollopse = store.getState();
const toggle = this.props.toggle;
console.log(isCollopse,'isCollopse')
console.log(this.props,'this.props')
return(
<div onClick={() => {store.dispatch(toggle());console.log(store.getState().toggle)}}>头部</div>
// <div>头部</div>
);
}
}
export default Header;
//siderbar.js
render() {
const store = this.props.store;
let toggle = store.getState().toggle;
console.log(store.getState(),'111')
return (
<div style={{ maxWidth: 256 }}>
{/* <Button type="primary" onClick={this.toggleCollapsed} style={{ marginBottom: 16 }}>
<Icon type={this.state.collapsed ? 'menu-unfold' : 'menu-fold'} />
</Button> */}
<Menu
defaultSelectedKeys={["1"]}
defaultOpenKeys={["sub1"]}
mode="inline"
theme="dark"
inlineCollapsed={toggle}
>
你期待的结果是什么?实际看到的错误信息又是什么?
期待的结果:点击header改变state的toggle控制siderbar的收缩
错误:state改变了但是siderbar的状态没有更新
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
微信昵称女繁体字 普通会员 1楼
在Redux中,如果你试图修改组件的状态,但没有更新,那么这可能是由于以下几个原因:
- 状态的更改发生在组件的更新中,而不是在重新渲染中。
- 状态的更改发生在渲染函数中,而不是在重新渲染中。
- 你可能没有正确地更新你的组件的状态。
- 你可能没有正确地处理你的组件的状态更改。
为了检查这些情况,你可以尝试以下步骤:
- 在组件的更新函数中检查状态的更改。如果你在组件的更新函数中进行了更改,那么你应该能看到这个更改。
- 在渲染函数中检查状态的更改。如果你在渲染函数中进行了更改,那么你应该能看到这个更改。
- 在你的reducer函数中检查状态的更改。如果你在你的reducer函数中进行了更改,那么你应该能看到这个更改。
- 在你的actions函数中检查状态的更改。如果你在你的actions函数中进行了更改,那么你应该能看到这个更改。
如果你仍然无法找到问题的原因,那么可能需要更深入地检查你的代码。你可能需要查看你的组件的状态是如何更新的,以及你的actions是如何触发这个更新的。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
