83 votes

"Erreur: Erreur: Erreur: Erreur: Vous ne pouvez pas appeler store.getState () pendant l'exécution du réducteur."

Je viens de mettre mon entièrement fonctionnel réagir-application native pour redux v4, mais maintenant j'obtiens l'erreur suivante:

Erreur: Erreur: Erreur: Erreur: Vous ne pouvez pas appeler magasin.getState (), tandis que le réducteur est en cours d'exécution. Le réducteur a déjà reçu de l'état en tant qu'argument. Col vers le bas à partir du haut réducteur au lieu de la lire à partir de la boutique.

Je soupçonne que le problème, c'est que j'ai de nombreux composants à l'intérieur d'autres, chacun avec leur propre connect(mapStateToProps, mapDispatchToProps)(Component) , et je suppose que ce n'est pas la bonne façon de le mettre en œuvre, bien que je ne suis pas sûr de la bonne façon d'aller à ce sujet.

N'importe quelle direction est grandement apprécié!

Trace De La Pile:

    This error is located at:
    in Connect(SideBarApp) (at SceneView.js:9)
    in SceneView (at createTabNavigator.js:10)
    in RCTView (at View.js:43)
    in RCTView (at View.js:43)
    in ResourceSavingScene (at createBottomTabNavigator.js:86)
    in RCTView (at View.js:43)
    in RCTView (at View.js:43)
    in TabNavigationView (at createTabNavigator.js:127)
    in NavigationView (at createNavigator.js:59)
    in Navigator (at createNavigationContainer.js:376)
    in NavigationContainer (at SceneView.js:9)
    in SceneView (at SwitchView.js:12)
    in SwitchView (at createNavigator.js:59)
    in Navigator (at createNavigationContainer.js:376)
    in NavigationContainer (at AppNavigator.js:36)
    in App (created by Connect(App))
    in Connect(App) (at index.ios.js:23)
    in Provider (at index.ios.js:22)
    in TheNewsApp (at renderApplication.js:32)
    in RCTView (at View.js:43)
    in RCTView (at View.js:43)
    in AppContainer (at renderApplication.js:31)

This error is located at:
    in NavigationContainer (at SceneView.js:9)
    in SceneView (at SwitchView.js:12)
    in SwitchView (at createNavigator.js:59)
    in Navigator (at createNavigationContainer.js:376)
    in NavigationContainer (at AppNavigator.js:36)
    in App (created by Connect(App))
    in Connect(App) (at index.ios.js:23)
    in Provider (at index.ios.js:22)
    in TheNewsApp (at renderApplication.js:32)
    in RCTView (at View.js:43)
    in RCTView (at View.js:43)
    in AppContainer (at renderApplication.js:31)

This error is located at:
    in NavigationContainer (at AppNavigator.js:36)
    in App (created by Connect(App))
    in Connect(App) (at index.ios.js:23)
    in Provider (at index.ios.js:22)
    in TheNewsApp (at renderApplication.js:32)
    in RCTView (at View.js:43)
    in RCTView (at View.js:43)
    in AppContainer (at renderApplication.js:31)
getState@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:79579:24
runComponentSelector@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:78896:56
initSelector@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:79019:28
Connect(SideBarApp)@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:78969:29
constructClassInstance@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:20826:32
updateClassComponent@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:22393:35
performUnitOfWork@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:24922:27
workLoop@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:24955:47
renderRoot@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:24988:21
performWorkOnRoot@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25549:23
performWork@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25481:30
performSyncWork@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25456:20
requestWork@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25362:26
scheduleWork@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25224:28
enqueueSetState@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:20681:23
setState@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:2380:37
dispatch@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:80901:27
navigate@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:80517:24
nav@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:80470:44
combination@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:79810:38
dispatch@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:79628:38
setLoginStatus@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:112247:19
http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:112199:44
tryCallOne@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:8818:16
http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:8919:27
_callTimer@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:8162:17
_callImmediatesPass@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:8198:19
callImmediates@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:8417:33
__callImmediates@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7741:32
http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7580:34
__guard@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7721:15
flushedQueue@http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7579:21
flushedQueue@[native code]
invokeCallbackAndReturnFlushedQueue@[native code]

197voto

Viet Le Points 486

C'est un problème avec la nouvelle v2.16.0 version de redux-devtools-extension.

Voici un couple de solution alors que nous attendons pour le réparer...

  1. Revenir à la version v2.15.5 (Pour Chrome)

  2. Ou tout simplement de désactiver votre redux-outil développeur d'internet explorer extension pour l'instant.

    • soit sur le niveau du navigateur ou par le biais de votre code(où vous créez le redux magasin)

FYI: ce n'est pas de résoudre les OP de la question, mais n'résoudre le problème où les développeurs reçoivent l'erreur ci-dessous le message de départ 11/27/18.

Error: You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.


Mise à JOUR

v2.16.2 a été publié

Pour ceux qui avaient déjà désactivé l'extension, tout simplement ré-activer et mettre à Jour votre redux outils de dev de 2.16.0 à 2.16.2 mise à Jour Redux outils de Dev

24voto

Cong Dan Luong Points 516

Dans mon cas, je dois supprimer composeWithDevTools - un plugin pour Chrome

 import { createStore, combineReducers, applyMiddleware } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
import thunk from 'redux-thunk';

// const enhancer = composeWithDevTools(applyMiddleware(thunk))
const enhancer = applyMiddleware(thunk)

const store = createStore(reducers, enhancer);
 

11voto

Van Hoang Truong Points 111

Dans mon projet. Ce problème surgit de nulle part un jour.

Ma solution: désactiver l'extension Chrome - Redux Devtools. Ensuite, tout est revenu à la normale.

Donc, avec ce type d'erreur, vous devriez tester dans plusieurs navigateurs pour trouver le problème.

5voto

Alqama Bin Sadiq Points 200

La désactivation de google chrome extension ou de retrait d' composeWithDevTool de votre code fonctionne comme une solution rapide. Mais nous savons tous que nous avons besoin de l'extension afin de suivre notre état de l'application et de les gérer correctement. J'ai donc créé un problème aujourd'hui, s'il vous plaît soutenir, espérons-le, quelqu'un de la redux équipe va revenir à nous.

Ou si vous cherchez une solution de contournement temporaire(pour chrome), vous pouvez télécharger https://github.com/zalmoxisus/redux-devtools-extension/releases/download/2.15.5/extension.zip et puis l'extraire dans un dossier.

Tapez chrome://extensions et activer le mode développeur partir du haut à gauche, puis cliquez sur Charger Déballé et sélectionnez le dossier extrait d'utilisation.

Question: https://github.com/reduxjs/redux-devtools/issues/413

5voto

sultan aslam Points 359

Solution qui fonctionne pour moi

Désactivez l'extension Chrome des outils de développement Redux . ou supprimez l' enregistreur de votre code.

update : mettez à jour vos outils de développement Redux de 2.16.0 à 2.16.1 Mettez à jour les outils de développement Redux .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X