solidjs 中 createEffect 监听指定的 Signal

React 的 useEffect 只需指定依赖数组

useEffect(()=>{
// code
},[a,b,c])

Vue3 的 watch 可以指定

const state = reactive({ a:0 , b:1 })

watch([()=>state.a,()=>state.b], () => {

})

在 Solidjs 中

默认 createEffect 是监听函数中所有使用到的 Signal,

只要任意一个改变都会触发 createEffect ,

使用 on 方法,

可以指定监听的 Signal ,其他的改变,不会触发 createEffect

单个直接传入 (不用 小括号)

多个使用数组格式

函数参数中可以接收新值与旧值

import { createEffect, createSignal, on } from "solid-js";


const [goldCoinNum, setGoldCoinNum] = createSignal<string>("");
const [goldCoinRatio, setGoldCoinRatio] = createSignal<string>("");

// on(goldCoinNum,(a,b)=>{})
createEffect(
  on([goldCoinNum, goldCoinRatio], () => {

    let num = Number.parseFloat(goldCoinNum());
    let ratio = Number.parseFloat(goldCoinRatio());
    //code

  })
);

传入 defer 参数, 可以使第一次不执行内部的逻辑

createEffect(
   on(a, 
     (v1,v2) => {
        console.log(v1)
     },
     { defer: true }
   )
);

版本

solidjs 1.8.7

其他

https://www.solidjs.com/docs/latest/api#on

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值