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

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啊

蛊毒传说
浏览 638回答 1
1回答

白猪掌柜的

如果你使用一个嵌套的数组或对象创建 Immutable 对象的话,只有最外面一层是 immutable 的,例如:var&nbsp;a&nbsp;=&nbsp;Immutable.Map({&nbsp;&nbsp;list:&nbsp;[1,2,3],&nbsp;&nbsp;obj:&nbsp;{a:&nbsp;1,&nbsp;b:&nbsp;2} })这样创建的对象只有最外层是不可变的,即使用&nbsp;a.get('list')&nbsp;获取到的内容仍然只是一个普通数组,并不是不可变数据。要想让所有内容都是不可变的就得麻烦一点:var&nbsp;a&nbsp;=&nbsp;Immutable.Map({&nbsp;&nbsp;list:&nbsp;Immutable.List([1,2,3]),&nbsp;&nbsp;obj:&nbsp;Immutable.Map({a:&nbsp;1,&nbsp;b:&nbsp;2}) })对比下你的使用方法,应该可以找到问题出在哪里了吧
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript