在函数组件中使用 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 传值,接口请求后获取数据解决方案

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

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