【问题标题】:Why is this.state.name not being used properly in my component?为什么 this.state.name 没有在我的组件中正确使用?
【发布时间】:2015-11-24 19:28:57
【问题描述】:

我有一个 teamName 存储,它存储团队的名称,并根据是否单击/悬停名称进行更改。

TeamStore.js:

function setName(name) {
    _team = name;
    _original = name;
}

//set a temp team name when sidemenu item is being hovered
function setHover(team) {
    _original = _team;
    _team = team;
}

function removeHover() {
    //console.log(_original);
    _team = _original;
}

我还有ThumbNail.jsx,它监听这个商店并在this.state.name 更改时触发_updateArticle 方法。但是,它无法正常工作。

  • 当项目被悬停时,文章不会改变。
  • 文章更改为悬停离开时悬停的项目(他们不应该这样做),它们应该返回到被点击的原始项目。

ThumbNail.jsx:

var ThumbNail = React.createClass({
    mixins: [ReactFireMixin],

    getTeamState() {
        return  TeamStore.getSelected() ;
    },

    getInitialState() {
        return {
            name: this.getTeamState(),
            articles: []
                };
    },

    getDefaultProps() {
        return {
            baseUrl: "https://shining-inferno-1085.firebaseio.com/"
        }
    },


    _updateArticle() {
        //console.log(this.state.name);
        var teamRef = new Firebase(this.props.baseUrl + this.state.name + "/results");

        this.bindAsArray(teamRef, 'articles');

    },

    componentDidMount() {

        TeamStore.addChangeListener(this._onChange);
        this._updateArticle();
    },

    componentWillUnmount() {
        TeamStore.removeChangeListener(this._onChange);
        this.unbind("articles");
    },

    render() {

        return (

            <ul className="tiles">
                <BasicInfo article={this.state.articles} />
            </ul>
            )   
    },

    _onChange() {
        var team = this.getTeamState();
        this.setState({name: team});
        //console.log(this.props.baseUrl + this.state.name + "/results");
        this.unbind("articles");
        this._updateArticle();
    }


});


module.exports = ThumbNail;

P.S 我有一个标题组件,它听同一家商店并且工作正常。如果您需要,请告诉我。

编辑:愿意解释反对意见吗?

【问题讨论】:

    标签: javascript reactjs reactjs-flux react-jsx


    【解决方案1】:

    此问题可能类似于 this

    setState() 不会立即改变 this.state 而是创建一个挂起的状态转换。调用此方法后访问 this.state 可能会返回现有值。

    【讨论】:

    • 哈!刚刚注意到。是你也问了另一个问题:)
    • 哈哈是的,我没有得到任何回应,所以我认为我的措辞很糟糕
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多