Reactjs 将JSX元素声明为子元素
我有一个名为“TextRender”的React组件,它正在呈现一些文本:Reactjs 将JSX元素声明为子元素,reactjs,Reactjs,我有一个名为“TextRender”的React组件,它正在呈现一些文本: render() { return ( <div> <Text> {this.props.sometext} </Text> </div> ) 让TextRender组件成为这样的高阶组件怎么样 render() { return ( <div> <Text> {this.props.somet
render() {
return (
<div>
<Text>
{this.props.sometext}
</Text>
</div>
)
让TextRender组件成为这样的高阶组件怎么样
render() {
return (
<div>
<Text>
{this.props.sometext}
</Text>
<Text>
{props.children}
</Text>
</div>
)
render(){
返回(
{this.props.sometext}
{props.children}
)
然后像这样使用组件(将子组件作为子组件注入)
返回(
{additionalElement()}
)
让TextRender组件成为这样的高阶组件怎么样
render() {
return (
<div>
<Text>
{this.props.sometext}
</Text>
<Text>
{props.children}
</Text>
</div>
)
render(){
返回(
{this.props.sometext}
{props.children}
)
然后像这样使用组件(将子组件作为子组件注入)
返回(
{additionalElement()}
)
是的,可以这样做
// Create the component as a function
const additionalElement = ()=><div>I am the child!</div>;
return (
<div>
// pass function as a child
<TextRender additionalJsxElement={additionalElement}></TextRender>
</div>
)
//将组件创建为函数
const additionalElement=()=>我就是孩子!;
返回(
//作为一个孩子传递函数
)
在TextRender组件中
render() {
const {additionalJsxElement, sometext } = this.props;
return (
<div>
<Text>
{sometext}
</Text>
</div>
<Text>
// the component should be made as follows.
<additionalJsxElement/>
</Text>
)
render(){
const{additionalJsxElement,sometext}=this.props;
返回(
{sometext}
//组件应按如下方式制作。
)
是的,可以这样做
// Create the component as a function
const additionalElement = ()=><div>I am the child!</div>;
return (
<div>
// pass function as a child
<TextRender additionalJsxElement={additionalElement}></TextRender>
</div>
)
//将组件创建为函数
const additionalElement=()=>我就是孩子!;
返回(
//作为一个孩子传递函数
)
在TextRender组件中
render() {
const {additionalJsxElement, sometext } = this.props;
return (
<div>
<Text>
{sometext}
</Text>
</div>
<Text>
// the component should be made as follows.
<additionalJsxElement/>
</Text>
)
render(){
const{additionalJsxElement,sometext}=this.props;
返回(
{sometext}
//组件应按如下方式制作。
)
我想说,最惯用的做法可能是:
const TextRenderer = ({ someText }) => (
<>
<div>
<Text>
{ someText }
</Text>
</div>
{ children }
</>
)
constTextRenderer=({someText})=>(
{someText}
{儿童}
)
然后,您可以将其用作:
<TextRender someText="Yoda" />
// OR
<TextRender someText="Yoda">
Luke Skywalker
</TextRender>
// OR
<TextRender someText="Yoda">
<div>
Wrapped stuff
</div>
</TextRender>
//或
卢克·天行者
//或
包装材料
我想说,最惯用的做法可能是:
const TextRenderer = ({ someText }) => (
<>
<div>
<Text>
{ someText }
</Text>
</div>
{ children }
</>
)
constTextRenderer=({someText})=>(
{someText}
{儿童}
)
然后,您可以将其用作:
<TextRender someText="Yoda" />
// OR
<TextRender someText="Yoda">
Luke Skywalker
</TextRender>
// OR
<TextRender someText="Yoda">
<div>
Wrapped stuff
</div>
</TextRender>
//或
卢克·天行者
//或
包装材料
似乎你的代码没有什么问题,除了
内部的
可能存在的问题。那么怎么了?加森·卢海奇:我用错误消息更新了我的问题。它说:未捕获类型错误:将循环结构转换为JSONOh我明白了,你所需要做的就是
。你应该传递函数c组件本身,而不使用()
。你的代码似乎没有什么问题,除了
内部的
可能有问题。那怎么了?加森·卢海奇:我用错误消息更新了我的问题。它说:未捕获类型错误:将循环结构转换为JSONOh我明白了,你只需要做
。你应该传递这个函数组件本身,没有使用()
调用它。尝试了此操作,但不幸的是它引发了以下错误:警告:React.createElement:type无效--需要字符串(对于内置组件)或类/函数(对于复合组件)但是得到:未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。您复制了确切的内容吗?请注意,additionalElement
变量应该是一个返回jsx的函数。是的,我确实执行了此操作,并多次检查了此操作。在您的文本渲染中rer组件尝试console.log(additionalJsxElement)和console.log(typeof additionalJsxElement)尝试了此操作,但不幸的是,它引发了以下错误:警告:React.createElement:type无效--需要字符串(对于内置组件)或类/函数(对于复合组件)但是得到:未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。您复制了确切的内容吗?请注意,additionalElement
变量应该是一个返回jsx的函数。是的,我确实执行了此操作,并多次检查了此操作。在您的文本渲染中rer组件尝试console.log(additionalJsxElement)和console.log(additionalJsxElement的类型)