我有一个工作正常的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);现在我想通过它的信号来改变programmingOnly布尔值:
const [programmingOnly, setProgrammingOnly] = createSignal(true);
//...
Programming Only: <input type="checkbox" checked={programmingOnly()}
onInput={()=>{setProgrammingOnly(!programmingOnly());refetch();}}> </input>但这不起作用,警报会在后续尝试时触发,但如果未定义为arg,则不会对数据执行任何操作。
SolidJS处理此问题的方式是什么?
发布于 2021-07-16 06:02:51
我认为这里的问题是信号每次都被设置为false。由于programmingOnly是一个信号,因此应该将其作为一个函数进行访问,以检索其值。
即..。
setProgrammingOnly(!programmingOnly)
// should be
setProgrammingOnly(!programmingOnly())您不需要调用refetch或执行任何其他操作即可使示例正常工作。
https://stackoverflow.com/questions/68401070
复制相似问题