Programing

ReactRedex - 여러 스토어 인핸서를 생성에 전달하는 중 오류 발생()

c10106 2022. 3. 9. 09:55
반응형

ReactRedex - 여러 스토어 인핸서를 생성에 전달하는 중 오류 발생()

리액션 앱이 있는데, 모두 잘 작동하고 있어.페이지 재로딩 시 저장 상태를 유지하여 데이터가 손실되지 않도록 해야 하므로 로컬 저장소에 데이터를 저장한 후 createStore(https://stackoverflow.com/a/45857898/801861))에 추가할 수 있도록 데이터를 반환하는 기능을 생성했다.데이터 저장소는 잘 작동하고 있으며, 데이터 저장소를 설정할 준비가 된 객체를 반환한다.createStore reaction에서 데이터 객체를 추가할 때 이 오류로 컴파일하지 못한 경우:

오류: 스토어()를 생성하기 위해 여러 개의 스토어 인핸서를 전달하고 있는 것으로 보인다.이것은 지원되지 않는다.대신 단일 함수로 구성

다음은 현재 코드 반환 오류:

const store = createStore(reducers, LoadState, applyMiddleware(thunk) );

//Error: It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function

실행 중인 내 원래 코드:

const store = createStore(reducers, applyMiddleware(thunk) );

온라인에서 찾은 유사한 문제들, 컴파일에 따라 이 문제를 해결하려고 했지만 원래 잘 작동하던 사이트 코드를 해독했다.

const composeEnhancers = LoadState || compose;
const store = createStore(reducers, composeEnhancers( applyMiddleware(thunk) ) );
//Error: Actions must be plain objects. Use custom middleware for async actions.

이걸 작동시키려면 뭘 바꿔야 할지 모르겠어. 어떤 도움이라도 고마워.

나는 당신이 이전 버전의 환원기에서 작업을 수행하는 자습서를 따르고 있다고 생각한다.

그림과 같이 Redex Dev Tools 확장에 사용할 CompositeEnhancer를 생성하십시오.

const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

그림과 같이 'remensx'에서 합성물을 가져온 후 -

import {createStore, compose, applyMiddleware} from 'redux';

표시된 대로 스토어를 만들 수 있다.

const Store = createStore(rootReducer, composeEnhancer(applyMiddleware(thunk)))

그 오류는 자명하다.정확히 무엇을 해야 하는지 알려준다!!

즉, 그것은 당신이 해야 한다는 것을 말해준다.compose대신 당신의 증조원들이요다음 절차를 참조하십시오.

1단계: Redex 라이브러리에서 'compose' 가져오기

import { createStore, applyMiddleware, compose } from 'redux';

#2단계: 두 개 이상의 증류제가 있으므로 증류제 목록을 작성하십시오.

const enhancers = [LoadState, applyMiddleware(thunk)];

const store = createStore(
    reducers,
    compose(...enhancers)
);

자세한 내용은 이 페이지를 참조하십시오.

나는 너의 문제가 너의 LoadState 내에 있다고 의심한다.도대체 무슨 일이야?다음은 작업 중인 createStore:

const store = createStore(
  reducers, 
  { counter: { count: 5 } },
  applyMiddleware(() => dispatch => { 
    console.log('Yoyoyo')

    return dispatch;
  }));

네 문제가 해결되길 바라.LoadState가 어떤 기능이나 LoadState가 어떤 것이든 아닌 실제 초기 상태 값을 입력하도록 하십시오 :)

패키지를 사용하여 Redex 스토어를 로컬 저장소에 보관할 수 있으며 자신의 기능을 만들 필요가 없음: https://github.com/rt2zz/redux-persist

패키지의 첫 번째 예에서는 resistanceRedcer() 및 restoreStore()를 사용하여 상태를 저장한 다음 새로 고침 페이지에서 자동으로 다시 수수를 처리하는 방법을 볼 수 있다.

여기에 링크 설명을 입력하는 데 도움이 될 수 있는 이 고급 저장소 설정을 확인하십시오.

https://github.com/zalmoxisus/redux-devtools-extension#12-advanced-store-setup

import { createStore, applyMiddleware, compose } from 'redux';

+ const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
+ const store = createStore(reducer, /* preloadedState, */ composeEnhancers(
- const store = createStore(reducer, /* preloadedState, */ compose(
    applyMiddleware(...middleware)
  ));

리액션 리플렉스로 시작해서 같은 이슈에 직면했다.그것이 올바른 접근법인지 확실하지 않지만, 우리는 간다.코드에서 고쳐야 할 한 가지 문제는 함수를 호출하는 겁니다

store = createStore(reducers, LoadState(), applyMiddleware(thunk) );

이 해결책은 나에게 효과가 있었다.

Redex saga 사용자의 경우,

    import createSagaMiddleware from "redux-saga";
    
    const sagaMiddleware = createSagaMiddleware();

    const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
    const store = createStore(rootReducer, composeEnhancer(applyMiddleware(sagaMiddleware)))

참조URL: https://stackoverflow.com/questions/56215220/react-redux-error-passing-several-store-enhancers-to-createstore

반응형