【发布时间】:2017-12-21 00:49:33
【问题描述】:
我认为这个问题已经回答了好几次,但我找不到我的具体案例。
https://codesandbox.io/s/jjy9l3003
所以基本上我有一个 App 组件触发一个动作,如果屏幕被调整大小并且小于 500 像素(如果更高,则为 false),将状态调用“isSmall”更改为 true
class App extends React.Component {
...
resizeHandeler(e) {
const { window, dispatch } = this.props;
if (window.innerWidth < 500 && !this.state.isSmall) {
dispatch(isSmallAction(true));
this.setState({ isSmall: true });
} else if (window.innerWidth >= 500 && this.state.isSmall) {
dispatch(isSmallAction(false));
console.log(isSmallAction(false));
this.setState({ isSmall: false })
}
};
componentDidMount() {
const { window } = this.props;
window.addEventListener('resize', this.resizeHandeler.bind(this));
}
...
我有一个名为 HeaderContainer 的另一个组件,它是 App 的子级并连接到 Store 和状态“isSmall”,我希望这个组件在“isSmall”更改状态时重新呈现......但它不是
class Header extends React.Component {
constructor(props) {
super(props);
this.isSmall = props.isSmall;
this.isHome = props.isHome;
}
...
render() {
return (
<div>
{
this.isSmall
?
(<div>Is small</div>)
:
(<div>is BIG</div>)
}
</div>
);
}
...
即使我可以通过控制台看到 redux 实际上正在更新存储,但 Header 组件并没有重新渲染。 有人可以指出我缺少什么吗?
我是否误解了“connect()”redux-react 函数?
【问题讨论】:
标签: reactjs react-redux