react 函数组件使用mobx传值mobx已存入值接口请求完才拿到值怎么解决啊
在函数组件中使用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在接口请求完才拿到值的问题
原文地址: https://www.cveoy.top/t/topic/iXqM 著作权归作者所有。请勿转载和采集!