如何在静态反应函数中设置状态?

时间:2016-12-21 10:25:55

标签: reactjs

我有一个通知类,通知消息应该从outsiede设置。现在它声明没有定义this.setState。我该如何解决这个问题?

阵营:

const Notification = React.createClass({

  statics: {
    createAlert: function(message) {
      this.setState({message: message});
    }
  },

  getInitialState: function() {
    return {
        message: '',
    };
  },

1 个答案:

答案 0 :(得分:1)

静力学没有实例。这是整个静态点,即它们在类之间共享,因此this上下文不会起作用。你不应该用静力学做这件事。我只使用ES6语法,所以这可能在语法错误。

const Notification = React.createClass({
    setMessage: function(message) {
        this.setState({message: message});
    }
    getInitialState: function() {
        return {
            message: '',
        };
    }
    render: function() {
        return (
            //Pass the setMessage function as a prop to a child class
            //You will need to .bind() setMessage somewhere
            <ChildClass setMessage={this.setMessage} /> 
        )
    }
});

const ChildClass = React.createClass({

    doSomething: function() {
        this.props.setMessage("Hello");
    }
    render: function() {
        return (

        )
    }
});

如果子类嵌套在多个级别,那么使用像redux,flux这样的状态管理,或者你可以使用React的上下文。