不变违规findComponentRoot(...):无法在redux操作调度上找到元素

时间:2016-01-22 07:29:40

标签: reactjs react-router redux

我有一个组件,它接收来自路线的某个道具 - 让我们称之为day。然后,还有一部分还原状态 - calendar,我使用connect()mapStateToProps。现在,当日期超出日历时,在componentWillReceiveProps我发送一个redux操作,再次重新计算日历以在其中包含日期。该操作完全同步,不发送任何请求。在那种情况下,我从反应中得到了不变的违规行为:

findComponentRoot(..., .0.1.0.$20160122): Unable to find element

我在做什么导致了这个问题?我没有做任何表格或嵌套的段落/表格。当我使用setTimeout(..)发送操作时,一切都按预期工作,所以我猜它是一些并发问题。

这是我的组件代码的样子:

componentWillReceiveProps(props) {
    if (!dateInArray(props.day, props.calendar)) {
        props.actions.calculateCalendar(props.day);
        // This works:
        // setTimeout(() => props.actions.calculateCalendar(props.day), 0);
    }
}

@autobind
dateToDiv(date) {
    const date8 = toDate8(date);

    return <Link className="daySelect" activeClassName="active" key={date8} to={`/date/${date8}`}>{toNiceDate(date)}</Link>
}

render () {
    return <div>{this.props.calendar.map(this.dateToDiv)}</div>
}

这或多或少是我的路线的样子

<Route path='/' component={App}>
    <IndexRedirect to={`date/${today8()}`}/>

    <Route path='date'>
        <IndexRedirect to={`${today8()}`}/>

        <Route path=":day" component={DayView}/>
    </Route>
</Route>

0 个答案:

没有答案