关于solidjs对对象或者数组使用createSignal,数据不响应的处理思路


问题来源

对某个小玩意儿做开发的时候,发现如果使用数组来构建createSignal,会引发修改数据不响应的情况。
示例:

let [alterEvent,setAlterEvent] = createSignal(
    [
    {
        "data":"数据1",
        "level":"1",
    },
    {
        "data":"数据2",
        "level":"1",
    },
    {
        "data":"数据3",
        "level":"1",
    },
    {
        "data":"数据4",
        "level":"1",
    }
]
)

解决思路

思路有两个:1.使用option配置来处理。2.使用Store来构建

思路一:

Solid 中的几个 API 将 "options" 对象作为可选的最后一个参数。createSignal 的选项对象允许您提供 equals 选项。默认情况下,当调用 signal 的 setter 时,根据 JavaScript 的 === 运算符,仅当新值实际上不同于旧值时,signal 才会更新(并导致依赖项重新运行)。

const [getValue, setValue] = createSignal(initialValue, { equals: false });

思路二:

当访问嵌套对象时,store 将生成嵌套 store 对象,这适用于整个树。但是,这只适用于数组普通对象。类没有被包装,所以像 Date、HTMLElement、RegExp、Map、Set 这样的对象不会像 store 上的属性一样被细粒度地响应。

声明:一代明君的小屋|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 关于solidjs对对象或者数组使用createSignal,数据不响应的处理思路


欢迎来到我的小屋