首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >for更新生命周期方法返回相同的日期道具

for更新生命周期方法返回相同的日期道具
EN

Stack Overflow用户
提问于 2017-08-08 08:04:40
回答 1查看 66关注 0票数 1

在接收新道具的组件中,出现了一种奇怪的行为。组件将接收一个对象和一个日期对象。

无论何时更新对象,在componentWillUpdate(nextProps, nextState) nextProps.someObject中,都会像预期的那样返回一个与this.props.someObject不同的对象。但是,当date对象被更新时,this.props.someObject已经包含了存储在nextProps中的新更新日期。

我是不是遗漏了一些关于数据类型或引用的东西?

编辑

举个例子:

  1. 呈现日期= 08/08/2017的SomeComponent和{name:"John"}的对象
  2. 用date = 09/08/2017更新SomeComponent,用{name:"Doe"}更新对象
代码语言:javascript
复制
    SomeComponent date={newDate} someObject={newSomeObject}

    componentWillUpdate: function(nextProps, nextState){
        console.log(nextProps.date !== this.props.date); // at update: false
        console.log(nextProps.someObject.name !== this.props.someObject.name); // at update: true
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-08 12:16:31

对待state就好像它是不可变的。

在浏览器中尝试以下代码:

代码语言:javascript
复制
var d = new Date();
var d2 = d;

d2.setDate(7);

d == d2;

d2d指向同一个对象。

现在你得到了你的状态:

let newDate = this.state.date

无论您更新什么newDatethis.state.date也会被更改。你可以试一试你的代码。

同样的情况也适用于其他数据类型,如数组。

我建议使用日期-fns作为Redux的创建者声明

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45562663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档