React
在“Connect(c)”的上下文或道具中找不到“商店”。將根組件包裝在 <Provider>
我正在嘗試創建一個使用新 DrizzleContext 組件但在我的 ’localhost:3000’ 中執行以下錯誤的 drizzle-react 應用程序:
> Could not find "store" in either the context or props of "Connect(c)". > Either wrap the root component in a <Provider>, or explicitly pass > "store" as a prop to "Connect(c)"
我的 index.js 看起來像這樣:
import React from 'react'; import ReactDOM from 'react-dom'; import { Drizzle, generateStore } from "drizzle"; import { DrizzleContext } from "drizzle-react"; import { LoadingContainer } from 'drizzle-react-components' import './index.css'; import App from './App'; //import * as serviceWorker from './serviceWorker'; import drizzleOptions from './drizzleOptions'; const drizzleStore = generateStore(drizzleOptions); const drizzle = new Drizzle(drizzleOptions, drizzleStore); ReactDOM.render( (<DrizzleContext.Provider drizzle={drizzle} > <LoadingContainer> <App /> </LoadingContainer> </DrizzleContext.Provider>), document.getElementById('root') );
我嘗試保持 drizzleOptions 內聯(一個小的預設選項對象)但無濟於事。我唯一能想到的是與毛毛雨相關的進口產品有警告:
找不到模組 ‘drizzle’ 的聲明文件同樣適用於 drizzle-react 和 drizzle-react-components
.. 任何幫助將不勝感激。謝謝。
–更多資訊已更新–我嘗試進行一些調試,似乎問題出在毛毛雨的“generateStore”功能中。即使傳遞的 drizzleOptions 參數具有正確的值,返回的儲存對像也是空的。任何指針?
– 更新 – ‘generateStore’ 不是問題。對於每個 dapp,store 對象預設為空,並且沒有填充值。問題是另外一回事。
原來問題可能出在“LoadingContainer”組件上。我刪除了它並開始工作。我認為問題在於“LoadingContainer”可能從 DrizzleContext.Provider 正確接收道具,但沒有進一步將它們注入其子組件(在本例中為 <App />)。
這進一步引出了一個問題:任何人都可以澄清如何接收從 DrizzleContext.Provider 發送到“類”組件的上下文嗎?對於“功能”組件,我想它非常簡單 - 使用 < DrizzleContext.Consumer >。我嘗試給一個帶有上下文道具的建構子,如下所示:
constructor(prop, drizzleContext)
但它不起作用。有任何想法嗎 ?