javascript - React,通过props传递immutable类型数据的疑问,跪求能人解答
大家讲道理
大家讲道理 2017-04-11 11:34:38
[JavaScript讨论组]
render() {
        //通过prop传递给子组件HotelFilterHeader两个 prop, type 和 list
        return (
            

) }

在HotelFilterHeader组件接收到prop后,进行比较。

componentWillReceiveProps(nextProps){
        console.log(Immutable.is(this.props.list, nextProps.list)); // false
        console.log(Immutable.is(this.props, nextProps)); // true
        //为什么一个false一个true啊,按理说list已经false了,props的比较也应该是false啊
    }

为什么一个false一个true啊,按理说list已经false了,props的比较也应该是false啊

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
ringa_lee

如果你使用一个嵌套的数组或对象创建 Immutable 对象的话,只有最外面一层是 immutable 的,例如:

var a = Immutable.Map({
  list: [1,2,3],
  obj: {a: 1, b: 2}
})

这样创建的对象只有最外层是不可变的,即使用 a.get('list') 获取到的内容仍然只是一个普通数组,并不是不可变数据。

要想让所有内容都是不可变的就得麻烦一点:

var a = Immutable.Map({
  list: Immutable.List([1,2,3]),
  obj: Immutable.Map({a: 1, b: 2})
})

对比下你的使用方法,应该可以找到问题出在哪里了吧

PHP中文网

props 并不是Immutable对象?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号