reactjs - 如何解决 react js 给出的错误,例如 TypeError: render is not a function?
问题描述
这是我的代码:
import React, { Component } from 'react'
import { storeProducts, detailProduct } from './data';
const ProductContext = React.createContext(null);
//Provider
//Consumer
class ProductProvider extends Component {
state = {
products: storeProducts,
detailProduct: detailProduct
}
handleDetail = () =>{
console.log('hello from details');
}
addToCart = () => {
console.log('hello from add to cart');
}
render() {
return (
<ProductContext.Provider value={{
...this.state,
}}>
{this.props.children}
</ProductContext.Provider>
)
}
}
const ProductConsumer = ProductContext.Consumer;
export { ProductProvider, ProductConsumer };
错误
我怎样才能解决这个问题?
解决方案
@Anshu,我认为错误来自消费者。在 的正下方TypeError: render is not a function
,我们可以看到updateContextConsumer
方法。
编辑:所以,我想我想通了。它确实与消费者有关。在你使用 的地方<ProductConsumer/>
,你需要使用一个函数作为他的孩子。就像是:
<ProductConsumer>
{ state => (<div>{ JSON.stringify( state ) }</div>) }
</ProductConsumer>
如果您想更好地理解它,我将代码放在我的 GitHub 上。 https://github.com/wagnermeyer/stackoverflow-issue-57788587
推荐阅读
- javascript - 我如何对 docker-entrypoint-init.d 的脚本进行身份验证
- windows - 如何使用 findstr 获取特定搜索字符串的第一次和最后一次出现之间的所有行?
- c# - Unable to connect to Oracle Db in aspnet core webapi
- javascript - 2个方法里面有相同的循环,我怎样才能保持代码干燥而不重复两次?
- xaml - 在 XAML 命名空间中找不到类型
- javascript - 将 div 放在 svg 轨道上
- ios - CITemperatureAndTint 过滤器取值范围
- java - 可能的问题在哪里,我的应用程序崩溃,我试图从网站 thingsSpeak 检索传感器数据,我正在使用扩展片段
- vb.net - 当我尝试为我创建的类创建构造函数时,为什么会出现错误?
- ios - Xcode 10.0 错误:无法 IRGen 表达式,没有其他错误