当前位置: 首页 > 知识库问答 >
问题:

面临的问题:警告:react.createElement:type无效-应为字符串

慕志泽
2023-03-14

不变冲突:元素类型无效:应为字符串(对于内置组件)或类/html" target="_blank">函数(对于复合组件),但GET:未定义。您可能忘记从定义组件的文件导出组件,或者您可能混淆了默认导入和命名导入。

检查_default的呈现方法。-node_modules\react-nativer\libraries\renderer\oss\reactnativerenderer-dev.js:5716:10 in createFiberFromTypeAndProps-node_modules\react-nativerEnderer-dev.js:5744:4 in createFiberFromElement-...22个框架内部的堆栈帧

警告:%s:错误边界应实现getDerivedStateFromError()。在该方法中,返回状态更新以显示错误消息或回退UI。Rooterrorbounder-node_modules\react-native\libraries\yellowbox\yellowbox.js:59:8 In error-node_modules\expo\build\environment\muteWarnings.fx.js:26:24 In error-................................................

app.js

import React from 'react';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import IndexScreen from './src/screens/IndexScreen';
import { Provider } from './src/context/BlogContext';

const navigator = createStackNavigator({
  Index: IndexScreen
}, {
  initialRouteName: 'Index',
  defaultNavigationOptions: {
    title: 'Blogs'
  }
});

const App = createAppContainer(navigator);

export default () => {
  return (
    <Provider>
      <App />
    </Provider>
  );
};

blogcontext.js

import React, { useReducer } from 'react';

    export default (reducer, actions, initialState) => {
         const Context = React.createContext();

         const Provider = ({ children }) => {
             const [state, dispatch] = useReducer(reducer, initialState);

             const boundActions = {};
             for(let key in actions){
                 boundActions[key] = actions[key](dispatch);
             }

             return(
                 <Context.Provider value={{state, ...boundActions}}>
                     {children}
                 </Context.Provider>
             );
         }

         return(Context, Provider);

    };

共有1个答案

袁骏祥
2023-03-14

您在BlogContext方面有一个问题。你没有正确使用它。您将其导出为默认函数,而在app.js中,则使用命名导入。

BlogContext应该如下所示:

import React, { useReducer } from 'react';

    export default (reducer, actions, initialState) => {
         const Context = React.createContext();

         const Provider = ({ children }) => {
             const [state, dispatch] = useReducer(reducer, initialState);

             const boundActions = {};
             for(let key in actions){
                 boundActions[key] = actions[key](dispatch);
             }

             return(
                 <Context.Provider value={{state, ...boundActions}}>
                     {children}
                 </Context.Provider>
             );
         }

         //return an object with two keys
         return {Context, Provider};

    };

app.js应相应地使用:


import blogContext from './src/context/BlogContext';
/**
 ...code ... 
**/
//here you create your provider by calling the function imported from BlogContext
//with the expected arguments
const { Provider } = blogContext(reducer, actions, initialState)

/**

**/

export default () => {
  return (
    <Provider>
      <App />
    </Provider>
  );
};
 类似资料:
  • 我正在用回复写一个 HOC。当我要返回类与 HOC 我得到一个警告在控制台说 函数作为React子级无效。如果您返回一个组件而不是< code >,可能会发生这种情况 我将为模式添加click处理程序,使其能够关闭。另外,我将从错误中得到消息,我已经将其作为第二个函数的参数传递给了模态中的show。

  • 单击此处查看问题链接。 从今天起我一直在努力解决这个问题,但我缺乏一些知识。我试图用受沃耶摩尔多数投票算法启发的方法来解决这个问题。 我的直觉是,假设第一个字符将具有max count,然后如果我们找到另一个字符,则减少ptr的值并增加count,同时将值存储在max中。 如果在某个时候,ptr==0,并且仍然有字符剩余,则将当前字符作为max_character并重复相同的过程。类似于多数投票算

  • 我在写JNI。在这种情况下,我的Java程序使用ByteOutputStream()获取一个图像字节数组,然后用这个数组调用C中的一个函数,将字节数组转换为无符号char*。代码如下: 在这一点上,当我编译时,我不断收到警告: 警告:使用“jbyte *”类型的表达式(也称为“signed char *”)初始化“unsigned char *”会在指向具有不同符号[-Wpointer-sign]

  • 当我使用Google chrome inspector查看下载的资源时,我注意到一条奇怪的警告信息(F12): 注意:显示了临时标题 我发现了一些可能相关的东西,网络面板:添加关于临时请求头的警告,但我不能完全理解它。可以在Chrome阻止请求以及无法加载XMLHttpRequest中找到相关问题。卸载的资源显示警告:显示临时标题。 与第一个问题类似,我的资源被阻止,但后来自动加载了相同的资源。与

  • 为什么控制台会疯狂打印,抛出这个警告?

  • 本文向大家介绍Regular Expressions 字符类和初学者面临的常见问题,包括了Regular Expressions 字符类和初学者面临的常见问题的使用技巧和注意事项,需要的朋友参考一下 示例 1.角色类别 字符类用表示[]。字符类中的内容被视为single character separately。例如,假设我们使用 在上面的示例中,它表示match 1 or 2 or 3 or 4