通过设置状态反应新的给定值不会更新组件值

时间:2020-06-05 13:54:27

标签: reactjs momentjs state setstate

我正在使用星期日历,因此我尝试将其制作成日历,以便我的日历可以显示未来的星期并返回到当前星期。单击“前进”按钮时,我想显示给我的状态一个新值。哪个工作正常(它在控制台中工作),只是我的视图不变,所以我认为它不会用新值更新组件。有谁知道我该怎么做才能使我的组件显示更新的值?

代码:

CREATE OR REPLACE FUNCTION word_pairs(sentence text) RETURNS TABLE (word1 text, word2 text) AS $SQL$
    SELECT word, lead(word, 1) OVER () FROM split_words(sentence) as t(word)
$SQL$ LANGUAGE SQL IMMUTABLE;

SELECT * from word_pairs('Welcome to Stack Overflow!');

1 个答案:

答案 0 :(得分:1)

您可以在docs for moment中看到add对原始日期对象进行了突变。

这意味着您正在执行以下操作来改变状态:

const day = this.state.showCalendarDay
this.setState({
  showCalendarDay:day.add(7,'days'),
})

当您改变状态时,react并不总是能捕捉到更改,也没有任何方法知道应该重新呈现。

您需要首先创建原始moment对象的副本。 here给出了更详细的说明。

结果将是这样的:

const day = this.state.showCalendarDay.clone();
this.setState({
  showCalendarDay:day.add(7,'days'),
})