0
const [action, setAction] = useState(true);
const sharedVal = useSharedValue(action ? 10 : 20)
useEffect(() => {
    setTimeout(() => {
        setAction(false)
    }, 2000)
}, [])

在上面的代码中, 的值shareVal不会改变更改的值actionsharedVal更新后的值的最佳方法是什么timeout

4

3 回答 3

1

更改时,您将不得不产生副作用action

useEffect(() => {
  
  sharedVal.value = action ? 10 : 20;

  // this will run when action is updated 
}, [action]);

或者你可以sharedVal.value = someValue随心所欲。

文件

(...) 引用是一个具有.value属性的对象,可以从 worklet 访问和修改,也可以直接从主 JS 线程更新。

于 2021-03-10T16:55:38.657 回答
0

我有一个和你类似的代码。每次警报变量发生变化时都会调用 UseEffect,正如您在下面的代码中看到的那样。如果第二个参数为空 [],则 useEffect 只会在页面加载时执行一次。由于您想在每次动作变量的值发生变化时调用,只需将其放在 [] 内即可。

    useEffect(() => {
       if (alert != '') setTimeout(() => { setAlert('') }, 4000);
    }, [alert]);
于 2021-03-10T21:02:18.367 回答
0

试试这个方法

function Example() {
  const [action, setAction] = useState(true);

  React.useEffect(() => {
    async function useSharedValue(number) {
      const response = await fetch(....);
      const json = await response.json();
      setAction(true); // reset state here
    }

    useSharedValue(action ? 10 : 20);
  }, []);
}
于 2021-03-10T16:58:02.613 回答