React

在“Connect(c)”的上下文或道具中找不到“商店”。將根組件包裝在 <Provider>

  • December 26, 2021

我正在嘗試創建一個使用新 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 &lt;Provider&gt;, 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(
   (&lt;DrizzleContext.Provider drizzle={drizzle} &gt;
       &lt;LoadingContainer&gt;
           &lt;App /&gt;
       &lt;/LoadingContainer&gt;
   &lt;/DrizzleContext.Provider&gt;),
   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)

但它不起作用。有任何想法嗎 ?

引用自:https://ethereum.stackexchange.com/questions/65510