【问题标题】:TypeError: render is not a function updateContextConsumerTypeError:render 不是函数 updateContextConsumer
【发布时间】:2020-05-20 13:02:16
【问题描述】:

我是 ReactJs 的新手,正在尝试学习 ContextAPI,但我遇到了这个错误。我阅读了有关这种情况的标题,但我无法找到解决方案。首先我尝试将 react 重新安装为旧版本,但是它没有改变。我尝试将 App 包装在 app.js 而不是 index.js 中,但结果与现在相同。

App.js

import React, { Component } from 'react'
import './App.css';
import UserFinding from './components/UserFinding';

class App extends Component {
render() {
return (
    <div>
        <UserFinding/>
    </div>
      )
  }
}
export default App;

UserFinding.js

import React, { Component } from 'react'
import User from './User.js'
import UserConsumer from '../context.js'

export default class UserFinding extends Component {
render(){
    return(
        <UserConsumer>
            {value=>{
                        const users=value;
                        return(
                            <div>
                                {
                                   users.map(user=>{
                                       return(
                                         <User key={user.id} id={user.id} userName= 
                                         {user.userName} department={user.department}/>
                                       )
                                   }
                                   ) 
                                }
                            </div>
                        )
                     }}
        </UserConsumer>
        ) 
  }
}

User.js

import React, { Component } from 'react'

export default class User extends Component {

state={
    isVisible:true
}
hideShowCard=()=>{
    this.setState({
        isVisible:!this.state.isVisible
    })
}
deleteOnUser=()=>{
    //Dispatch
}
render() {

    return (
            <div>
                <div className="row">
                <div className="col-sm-6">
                    <div className="card">
                        <div className="card-body">
                            <h5 className="card-title">{this.props.userName}<i onClick= 
           {this.deleteOnUser} className="fa fa-trash ml-2"></i></h5>
                            {this.state.isVisible ? <p className="card-text"> 
           {this.props.department}</p>:null}
                            <div onClick={this.hideShowCard} className="btn btn-primary"> 
           {this.state.isVisible ? "Hide" : "Show"}</div>
                        </div>
                    </div>
                </div>
                </div>
            </div>

         )
        }
       }

context.js

import React,{Component} from 'react';
const UserContext=React.createContext();
export class UserProvider extends Component {
 state={
    users:[
      {
        id:1,
        userName:"Ufuk Oral",
        department:"Software Engineering"
      },
      {
        id:2,
        userName:"Emre Çorbacı",
        department:"Data Science"
      }
    ]
   }
 render(){
    return (
        <UserContext.Provider value={this.state}>
            {this.props.children}
        </UserContext.Provider>
    )
 }
}
const UserConsumer=UserContext.Consumer;
export default UserConsumer;

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import UserProvider from './context.js';
ReactDOM.render(
<UserProvider><App/></UserProvider>,document.getElementById('root')); 
serviceWorker.unregister();

这些是我的代码。

【问题讨论】:

    标签: javascript reactjs api jsx react-dom


    【解决方案1】:

    当上下文组件中未添加“提供者”时,我遇到了这个问题。 这样,

    <AuthContext value={allContexts}>
            {children}
    

    我解决了,只是添加了'.Provider' 这样,`

    {孩子们} `

    【讨论】:

      【解决方案2】:

      您在 context.js 文件中导出和导入的内容似乎有误。 而不是

      import UserProvider from './context.js';
      

      试试这样的

      import {UserProvider} from './context.js';
      

      你是如何尝试升级 react 版本的?你在使用 create-react-app 吗?如果是这样,您还必须更新反应脚本。要升级到所选版本,您必须尝试这样的操作

      npm install --save --save-exact react@x.xx react-dom@x.xx 
      

      yarn add --exact react@x.xx react-dom@x.xx
      

      【讨论】:

      • 非常感谢我成功了。
      • @O.Ufuk,我收到这样的错误 Objects are not valid as a React child (found: object with keys {key1, key2, fun1, fun2})。如果您打算渲染一组子项,请改用数组。
      猜你喜欢
      • 2021-07-13
      • 2017-05-06
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多