Хранить в XSTATE для доступа к компонентам?

У меня есть компонент A и компонент B, где после некоторого выбора в компоненте A компонент B должен иметь возможность получить состояние обновления или выбор. Я выделил отдельные машины для MachineA и MachineB соответственно. Я хочу знать, как получить контекст MachineB в компоненте B, который обновляется в компоненте A.

Например: Компонент A извлекает данные с машины A и обновляет контекст машины B с выбранным продуктом. Теперь компонент B должен иметь доступ к обновленному хранилищу компьютера B. есть идеи как это сделать? Я не хочу передавать состояние в качестве реквизита.


person Pradosh    schedule 28.07.2020    source источник


Ответы (2)


Поднимите состояние и используйте контекст. Поместите обе машины в контекст, чтобы все компоненты использовали одни и те же экземпляры машин.

person Ivan V.    schedule 04.08.2020

Вы должны предоставить некоторый код, вы используете теги reactjs и angular, поэтому трудно понять, что у вас есть в вашем коде.

В любом случае, я не уверен, что вы уже вызываете машину B внутри машины A, это первый шаг для их подключения. Второй шаг — использование машины B на компоненте B, но с машины A. На реакцию будет что-то вроде этого

// A machine file
const AMachine = Machine({
  id: "aState",
  initial: "initialState",
  invoke: [
    { id: "bState", src: BMachine }
  ],
  states: {...},
}


// A component
const [state, send] = useMachine(AMachine);
const AMachineContext = React.createContext(null);

<AMachineContext.Provider value={state}>
  <BComponent />
</AMachineContext.Provider>


// B component
const aMachine = useContext(AMachineContext);
const [bState] = useService(aMachine.children.bState);

person Rodrigo    schedule 04.12.2020