在函数组件中使用mobx传值,如果接口请求需要一段时间才能返回值,可以使用mobx的异步操作来解决。

首先,确保mobx已经存入了值,可以使用mobx.runInAction来更新mobx的状态,例如:

import { observer } from 'mobx-react';
import { useObservable, useObserver } from 'mobx-react-lite';
import { runInAction } from 'mobx';

const MyComponent = observer(() => {
  const dataStore = useObservable({
    data: null
  });

  useEffect(() => {
    fetchData().then(data => {
      runInAction(() => {
        dataStore.data = data;
      });
    });
  }, []);

  return useObserver(() => (
    <div>
      {dataStore.data ? (
        <div>{dataStore.data}</div>
      ) : (
        <div>Loading...</div>
      )}
    </div>
  ));
});

在上面的例子中,dataStore是一个mobx observable对象,使用useObservable来创建。在useEffect中发起接口请求,并在请求返回后使用runInAction来更新dataStore.data的值。

在函数组件中,使用useObserver来包裹需要观察的部分,这样当dataStore.data更新时,组件会重新渲染。

当接口请求返回数据后,dataStore.data会被更新,组件会显示数据。在请求期间,组件会显示"Loading..."。

这样就可以解决mobx在接口请求完才拿到值的问题

react 函数组件使用mobx传值mobx已存入值接口请求完才拿到值怎么解决啊

原文地址: https://www.cveoy.top/t/topic/iXqM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录