Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 从另一个组件响应更新组件状态_Reactjs - Fatal编程技术网

Reactjs 从另一个组件响应更新组件状态

Reactjs 从另一个组件响应更新组件状态,reactjs,Reactjs,我有一个组件,如下所示: var SingleEditableModule = React.createClass({ getInitialState: function() { return { selected: false }; }, show_overlay: function() { $('.overlay').fadeIn()

我有一个组件,如下所示:

    var SingleEditableModule = React.createClass({
        getInitialState: function() {
            return {
                selected: false
            };
        },
        show_overlay: function() {
            $('.overlay').fadeIn();
        },
        render: function() {
            var show_overlay = this.show_overlay;
            return (
                <div className="large-4 small-12 columns">
                    <h3 className="title">{this.props.data.title}</h3>
                    <div className="month">
                        <p>
                            {this.props.data.month}
                        </p>
                    </div>
                    <div className="img-holder">
                        <div 
                            id={this.props.data.id} 
                            onClick={show_overlay} 
                            className="action_wrapper">
                                <span className="swap_trigger"></span>
                                <span className="action">
                                    {this.props.data.action}
                                </span>
                        </div>
                    </div>
                    <h4>{this.props.data.title_description}</h4>
                    <p>{this.props.data.description}</p>
                </div>
            );
        }
    });
我想根据从get_campus_id获得的类名为该组件分配一个CSS类:

    var Overlay = React.createClass({
        close_overlay: function() {
            $('.overlay').fadeOut();
        },
        get_campus_id: function(className) {
            console.log(className);
        },
        render: function() {
            var options = [],
                get_campus_id = this.get_campus_id;
            this.props.data.map(function(el, i){
                options.push(<li 
                className={el.className} 
                onClick={get_campus_id.bind(null, el.className)} 
                key={i}>{el.location}</li>);
            });
            return (
                <div className="overlay">
                    <div className="overlay-content">
                        <header className="clearfix">
                            <h3 className="float-left">Select your campus rotation</h3>
                            <div onClick={this.close_overlay} className="float-right close">
                                <span className="cancel">Cancel</span> 
                                <span className="x">x</span>
                            </div>
                        </header>
                        <ul>
                            {options}
                        </ul>
                        <footer>
                        </footer>
                    </div>
                </div>
            )
        }
    });
SingleEditableModule表示一个空模块,可以根据get-U id返回的值填充该模块


完整github url:

您不能从一个组件更改另一个组件的状态。您所能做的最好是让它们都是父零部件的子零部件,然后将参数作为道具传递。然后,如果您想在此基础上修改状态,可以使用ComponentWillReceivePropsExtProps拦截新的道具。您不能从另一个组件更改一个组件的状态。您所能做的最好是让它们都是父零部件的子零部件,然后将参数作为道具传递。然后,您可以使用ComponentWillReceivePropsExtProps来拦截新的道具,如果您想修改基于该道具的状态