mty*_*son 4 javascript solid-js
我有一个createResource正在工作:
const fetchJokes = async (programmingOnly) => {
alert(programmingOnly);
return (await fetch(`https://official-joke-api.appspot.com/jokes/${programmingOnly?'programming/':''}ten`)).json();
}
//...
const [jokes, { mutate, refetch }] = createResource(programmingOnly(), fetchJokes);
Run Code Online (Sandbox Code Playgroud)
现在我想programmingOnly通过它的信号更改布尔值:
const [programmingOnly, setProgrammingOnly] = createSignal(true);
//...
Programming Only: <input type="checkbox" checked={programmingOnly()}
onInput={()=>{setProgrammingOnly(!programmingOnly());refetch();}}> </input>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,警报会在后续尝试中触发,但未定义为 arg,并且数据没有任何反应。
SolidJS 解决这个问题的方法是什么?
小智 6
我相信这里的问题是信号每次都被设置为 false。由于programmingOnly是一个信号,因此应该将其作为函数来访问以检索其值。
IE..
setProgrammingOnly(!programmingOnly)
// should be
setProgrammingOnly(!programmingOnly())
Run Code Online (Sandbox Code Playgroud)
您不需要调用 refetch 或执行任何其他操作即可使示例正常工作。