<Provider> 中的错误 - 检查 `Provider` 的渲染方法。反应还原

Posted

技术标签:

【中文标题】<Provider> 中的错误 - 检查 `Provider` 的渲染方法。反应还原【英文标题】:Error in <Provider> - Check the render method of `Provider`. react-redux 【发布时间】:2019-06-08 19:07:32 【问题描述】:

enter image description here

代码:这是我的 index.js 文件

index.js

    import  Provider  from "react-redux";
    import  createStore  from 'redux';

    import App from './app';

    import reducer from './store/reducer';

    const store = createStore(reducer);
    console.log("Store ..."+store);
    console.log(Provider);

    ReactDOM.render((
      <Provider store=store>
        <App/>
      </Provider>
    ), document.getElementById('root'));

代码:这是我的 reducer.js 文件

    reducer.js
    import * as actionTypes from './actions';

    const initialState = 
    assistants:[],
    fetchInProgress:true
    

    const reducer = (state = initialState, action) =>

    return state;
    ;

    export default reducer;

代码:这是我的 app.js 文件 app.js

class App extends Component
render()
return(
  <HashRouter>
    <Switch>
    <Route exact path="/login" name="Login Page" component=Login/>
    <Route exact path="/register" name="Register Page" component= 
    Register/>
    <Route exact path="/404" name="Page 404" component=Page404/>
    <Route exact path="/500" name="Page 500" component=Page500/>
    <Route path="/" name="Home" component=Full/>
    </Switch>
  </HashRouter>
  );
 
 

 export default App;

错误:未捕获的错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:对象。

查看Provider的渲染方法。

请参考两张图片是否有错误。我收到错误,请检查您的提供程序组件渲染方法,但这不是我要更改提供程序渲染方法的。因为它是从 redux 导入的类,所以请帮我解决这个问题,我在过去两天遇到的这个问题无法解决。

【问题讨论】:

您的app.js 是否正确导出了您尝试在Provider 中渲染的组件? 你能告诉我们App类和商店吗? 我正在为完全相同的问题寻求帮助(也许学习 Max 的相同教程)。我没有组合减速器。 请参考图片是否有错误。我在控制台中打印了 Store 和 Provider 值。 i.stack.imgur.com/5AwvS.png 我猜你已经升级了 react 版本。你还需要升级 react-dom,它会解决这个问题。 【参考方案1】:

我认为您的问题在于您传入的减速器。 你有没有使用 combineReducers 函数来组合你的 reducer?

import  createStore, combineReducers  from "redux";


const store = createStore(combineReducers( 
    //...all your reducers 
));

Working sandbox example

与您的代码进行比较。也许从删除所有路线开始。可能有问题

【讨论】:

我有同样的问题,没有组合减速器: import * as actions from '../actionNames';常量初始状态 = 人: [] ; const reducer = ( state = initialState, action ) => switch ( action.type ) case actions.ADD_PERSON: console.log( actions.ADD_PERSON );返回状态;案例actions.DELETE_PERSON:console.log(actions.DELETE_PERSON);返回状态;默认:返回状态; ; ;导出默认减速器; @user2775366 我还没有解决方案,如果有我会尽快分享 我已经更新了问题,请大家去看看。用同样的@varoons 帮助我【参考方案2】:

我尝试导入 thunk 来解决数据类型问题,但不是解决方案。

【讨论】:

他的版本确实有效,所以我们在处理商店时遗漏了一些东西,很可能来自该州的联系人数据,这些数据要么在讲座中遗漏,要么在语言更新中丢失。如果你想练习的话,我会专注于 redux 存储研究的调试,但我将使用他并学习部署,然后专注于学习 react/redux 流程的语言实现,并在之后进行调试。【参考方案3】:

与以前的代码和新的 React 或 Redux 版本不兼容。 在我降级安装的工具之前,我遇到了这个问题,请参阅所比较的 package.json 文件的附件图像。 我不知道哪个文件是罪魁祸首。 屏幕右侧的阵容可以正常工作,而另一个我无论做什么都会出错。 版本差异以黄色背景突出显示。 我猜(未经测试)问题源于 react 和 react-dom 包之间的版本差异。

Victor Nunes 建议的解决方案是:

    删除package-lock.json文件和node_modules文件夹 删除package.json上“依赖”的所有内容 运行npm install --save react react-dom react-redux react-scripts redux

除了上面列出的软件包之外,您可能还需要安装其他软件包。

【讨论】:

您在上面列出的npm install 命令为我解决了这个问题(没有删除任何内容).. 在我的情况下似乎有些依赖项未对齐!谢谢!!!我已经尝试过重新安装除了 react-dom 和 react-scripts 之外的所有东西,所以其中一个是我的罪魁祸首。 另外,指向您找到此信息的位置的链接对于某些上下文会有所帮助! @Paul 抱歉,我无法链接,信息来自我正在学习的 React 课程,而且它不是免费的。

以上是关于<Provider> 中的错误 - 检查 `Provider` 的渲染方法。反应还原的主要内容,如果未能解决你的问题,请参考以下文章

试图调用 Provider.of<dynamic>。这可能是一个错误,因此不受支持

错误:[Dagger/MissingBinding] Map<Class<?扩展 ViewModel>, Provider<ViewModel>> 不能在没有 @P

错误 ITMS-5063:“未提供 <provider> 和 <team_id> - 至少需要一个”在软件

错误:在此 Directioner 小部件上方找不到正确的 Provider<User>

useDispatch() 错误:找不到 react-redux 上下文值;请确保组件包装在 <Provider>

错误:在此 UpdateSupervisor 小部件上方找不到正确的 Provider<NewUser>