san-update icon indicating copy to clipboard operation
san-update copied to clipboard

按照文档写的例子没有生效

Open PreciousDust opened this issue 5 years ago • 3 comments

版本

2.1.0

问题

import { update, set } from 'san-update'
let source = {
       value: 1
}
update(source, {value: {$set: 2}})
set(source, 'value', 2)
console.log(source)
结果还是 {
   value:1
}

PreciousDust avatar Jun 12 '19 09:06 PreciousDust

let target = update(source, {value: {$set: 2}});
console.log(target);

正是因为这是一个immutable的库,所以source是不会变的

otakustay avatar Jun 12 '19 12:06 otakustay

    initData() {
        return {
            list: [
                {
                    title: 'test1'
                },
                {
                    title: 'test2'
                }

            ]
        };
    }
       // 想改变对象深层的数据,下面仅仅是一个例子,实际上还有很多复杂的修改,不能直接用 san 提供的 this.data.set 修改,那么除了深拷贝解决没有更新的问题,san-update 也没办法解决这个问题吗?
        let firstNews = this.data.get('list');
        firstNews[0].title = 1111;

        // 在这里直接set数据发现并没有触发视图的更新
        this.data.set('list', firstNews);
        // 在这里深拷贝视图更新了
        this.data.set('list',  clone(firstNews));

PreciousDust avatar Jun 13 '19 01:06 PreciousDust

let firstNews = this.data.get('list');
let newFirstNews = set(firstNews, [0, 'title'], 1111);
this.data.set('list', newFirstNews);

otakustay avatar Jun 17 '19 07:06 otakustay