2 回答
TA贡献1872条经验 获得超3个赞
它SummaryContext.Consumer
使用渲染道具,特别是一个函数作为子组件,因此它期望它的直接子组件是一个函数。
这就是你得到错误的原因,
类型错误:渲染不是函数。(在'render(newValue)'中,'render'是Object的一个实例)
在您的情况下,您可以将 div 移动到函数内部,例如,
import React from "react";
import { useContext } from "react";
import { SummaryContext } from "./SummaryContext";
export function Title() {
const message = useContext(SummaryContext);
return (
<SummaryContext.Consumer>
{(value) => (
<div>
<h2>{message}</h2>
</div>
)}
</SummaryContext.Consumer>
);
}
此处value本身也提供了您希望显示的消息,因此您可以直接使用<h2>{value}</h2>一种方式,或者您也可以采用以前的方式将其分配给变量message并在模板内调用。
TA贡献1836条经验 获得超13个赞
我将react
和react-dom
版本更新为 16.13.0 并删除了SummaryContext.Consumer
如果您需要消费者 api 或无法升级反应版本,那么您应该将一个函数作为子函数传递给SummaryContext.Consumer
import React from "react";
import { useContext } from "react";
import { SummaryContext } from "./SummaryContext";
export function Title() {
return (
<SummaryContext.Consumer>
{(value) => (
<div>
<h2>{value}</h2>
</div>
)}
</SummaryContext.Consumer>
);
}
添加回答
举报