on предназначен для передачи в вычисление, чтобы сделать его зависимости явными. Если передается массив зависимостей, то input и prevInput являются массивами.
1234567
createEffect(on(a,(v)=>console.log(v,b())));// is equivalent to:createEffect(()=>{constv=a();untrack(()=>console.log(v,b()));});
Вы также можете не запускать вычисления сразу, а сделать так, чтобы они выполнялись только при изменении, установив опцию defer в true.
1234
// doesn't run immediatelycreateEffect(on(a,(v)=>console.log(v),{defer:true}));setA('new');// now it runs
Обратите внимание, что для магазинов и mutable добавление или удаление свойства из родительского объекта вызывает эффект. См. раздел createMutable.
1 2 3 4 5 6 7 8 910111213141516
const[state,setState]=createStore({a:1,b:2});// this will not workcreateEffect(on(state.a,(v)=>console.log(v)));setState({a:3});// logs nothing// instead, use an arrow functioncreateEffect(on(()=>state.a,(v)=>console.log(v)));setState({a:4});// logs 4