为了账号安全,请及时绑定邮箱和手机立即绑定

React,通过props传递immutable类型数据的疑问,跪求能人解答

React,通过props传递immutable类型数据的疑问,跪求能人解答

蛊毒传说 2018-10-17 17:31:53
render() {        //通过prop传递给子组件HotelFilterHeader两个 prop, type 和 list        return (            <div>                <HotelFilterHeader type={this.state.data.get('type')} list={this.state.data.get('list')}/>            </div>        )    }在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啊
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

如果你使用一个嵌套的数组或对象创建 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})
})

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


查看完整回答
反对 回复 2018-11-12
  • 1 回答
  • 0 关注
  • 637 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信