Javascript 有没有一种方法可以在组件外部更新recoilJS上的状态?
因此,我正在为我正在构建的js游戏尝试recoilJS,它非常整洁,但是从组件更新原子的需求感觉只是一个限制Javascript 有没有一种方法可以在组件外部更新recoilJS上的状态?,javascript,recoiljs,Javascript,Recoiljs,因此,我正在为我正在构建的js游戏尝试recoilJS,它非常整洁,但是从组件更新原子的需求感觉只是一个限制 为了创建一个游戏循环,我将所有逻辑放在空组件上,以便能够读取和写入状态。即使我将在组件外部构建登录,我也需要始终移动不同的统计信息。有一种方法可以更新react组件之外的原子(不是通过挂钩)?现在没有。为反冲团队打开了一个建议。我用来帮助在组件外部设置反冲JS值 开始时,我创建了4个零件作为 主要成分 将RecoilJS设置为组件文件的外部值 1) 梅因先生 3) .Atom文件 e
为了创建一个游戏循环,我将所有逻辑放在空组件上,以便能够读取和写入状态。即使我将在组件外部构建登录,我也需要始终移动不同的统计信息。有一种方法可以更新react组件之外的原子(不是通过挂钩)?现在没有。为反冲团队打开了一个建议。我用来帮助在组件外部设置反冲JS值 开始时,我创建了4个零件作为
export const textState = atom({
key: 'textState'
default: ''
});
4) .将RecoilJS设置在组件文件的值之外
import API from './Api';
import { setRecoil } from './RecoilJSComponent'
import { textState } from './textState'
export const setValueReCoil = () => {
API()
.then(result => {
setRecoil({ recoilObj: textState, value: result })
})
.catch(ex => {
})
};
主要的偶像是在2和4
在第二位,
我创建RXJS以通过组件设置值,并导出RXJS以在组件外部的RecoilJS上设置值
import React from 'react';
import {
useRecoilCallback
} from 'recoil';
import { Subject } from 'rxjs';
export const setRecoil = new Subject();
const getRecoil = new Subject();
const returnRecoil = new Subject();
export const promiseGetRecoil = (recoilObj) => {
return new Promise(async (resolve, reject) => {
getRecoil.next(recoilObj)
returnRecoil.subscribe({
next: (value) => {
if (recoilObj === value.recoilObj) {
resolve(value.value)
}
}
});
})
}
export default function RecoilJSComponent() {
const setStore = useRecoilCallback(({ set }) => (n) => {
set(n.recoilObj, () => (n.value));
}, [])
const getStore = useRecoilCallback(({ snapshot }) => async (recoilObj) => {
const valueRecoilObj = await snapshot.getPromise(recoilObj);
returnRecoil.next({ recoilObj: recoilObj, value: valueRecoilObj })
}, [])
setRecoil.subscribe({
next: (value) => {
setStore(value)
}
});
getRecoil.subscribe({
next: (recoilObj) => {
getStore(recoilObj)
}
});
return null;
}
我希望我的偶像能帮助你解决你的问题你可以使用react wire。类似的API,但也可以在react上下文之外使用。请参见中的
createWire
和createSelector
。我创建了一个包来解决此问题。祝你好运。我只是想说这个答案太棒了。我没有使用RxJS,而是使用了我自己的sub/pub全局回调,但这个想法非常棒。我只是想说谢谢你让我走上了正确的道路。
import API from './Api';
import { setRecoil } from './RecoilJSComponent'
import { textState } from './textState'
export const setValueReCoil = () => {
API()
.then(result => {
setRecoil({ recoilObj: textState, value: result })
})
.catch(ex => {
})
};