Javascript ReactJS SetState不重新招标

Javascript ReactJS SetState不重新招标,javascript,reactjs,fluxible,Javascript,Reactjs,Fluxible,我有: 工作筛选 handleSetView(mode, e) { this.setState({ view: mode }); console.log(this.state.view) } render() { return ( <div className="jobs-screen"> <div classNam

我有:

工作筛选

handleSetView(mode, e) {
        this.setState({
            view: mode
        });
        console.log(this.state.view)
    }

    render() {
        return (

            <div className="jobs-screen">
                <div className="col-xs-12 col-sm-10 job-list"><JobList view={this.state.view} /></div>
                <div className="col-xs-12 col-sm-2 panel-container">
                    <div className="right-panel pull-right"><RightPanel handleSetView={this.handleSetView} /></div>
...
)
}
handleSetView(模式e){
这是我的国家({
视图:模式
});
console.log(this.state.view)
}
render(){
返回(
...
)
}
右面板

render() {
        return (
            <div>
                <div className="controls">
                    <span className="title">Views <img src="images\ajax-loader-bar.gif" width="24" id="loader" className={this.state.loading ? "pull-right fadeIn" : "pull-right fadeOut"}/></span>
                    <button onClick={this.props.handleSetView.bind(this, 'expanded')}><img src="/images/icons/32px/libreoffice.png" /></button>
                    <button onClick={this.props.handleSetView.bind(this, 'condensed')}><img src="/images/icons/32px/stack.png" /></button>
                    </div>
...
)}
render(){
返回(
意见
...
)}
工作清单

render() {
        var jobs = [];
        this.state.jobs.forEach((job) => {
            jobs.push(
                <Job key={job.id} job={job} view={this.props.view} loading={this.state.loading} toggleTraderModal={this.props.toggleTraderModal} toggleOFTModal={this.props.toggleOFTModal}/>
            );
        });

        return (
            <div>
                {jobs}
            </div>
        );
    };
render(){
var作业=[];
this.state.jobs.forEach((作业)=>{
乔布斯,推(
);
});
返回(
{jobs}
);
};
问题是,视图状态的更改不会重新引发任何子元素


我如何才能让它工作?

不确定这是否是您问题的核心,但是:

handleSetView={this.handleSetView}
是错误的,因为js是如何绑定的。使用:

handleSetView={this.handleSetView.bind(this)}
相反

而且

this.setState({
  view: mode
});
console.log(this.state.view)
看起来很奇怪;请注意,
this.state
不会在调用
setState
后立即修改,React调度计划的
setState
操作时可能需要一些时间。将
console.log
放入render,查看它实际何时被调用


最后,请确保您的组件没有实现
shouldComponentUpdate
lifecycle方法(您可能没有明确执行此操作,但如果您的组件扩展了React.component以外的类,则可能会发生这种情况)
位于react组件的上下文中,因此要么将
的引用传递给函数
handleSetView
要么绑定@Tomas所述的
,您是否有任何错误?没有错误。这不是状态问题,不是重新呈现您只是没有绑定您的函数Genius:)I(这个)不见了。这到底是做什么的?:)它确保了当你调用
handleSetView
(这在js中不会自动发生)时
这个
被正确地绑定到组件对象上@Thomas Kulich我肯定这只是一个愚蠢的错误,但你说这在js中不会自动发生,我想你的意思是在ES2015中。这不是最好的处理方法,因为每次重新渲染时都会创建一个新函数。最好在构造函数中绑定
this.handleSetView
,或将其转换为es6 arrow函数。