如何在JSX中使用函数

Kir*_*ran 0 jsx reactjs

我目前正在阅读React官方网站,在那里遇到了这个问题。React官方网站指出,我们可以在JSX内部使用功能代码。因此,我尝试了以下代码,但无法正常工作。

ABCD类扩展了React.Component {

render() {
    return (
        <div>
            <p>
                {() => <div>Hello World </div>}
            </p>
        </div>
    );
}
Run Code Online (Sandbox Code Playgroud)

}

我知道,我知道,有些人可能会说请参见React网站上给出的示例。我看到了,官方网站上的示例涉及外部功能。我只想知道我们可以在JSX内部独立使用函数。

请参阅此链接以获取更多信息:https : //reactjs.org/docs/jsx-in-depth.html

Bla*_*kus 5

只需调用一个返回 JSX 的函数即可。例如:

class FooComp extends React.Component {
    someFunction() {
        return (<div>Hello World!</div>);
    }

    render() {
        return (
            <div>
                    <p>
                        {this.someFunction()}
                    </p>
            </div>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)


Sha*_*ana 5

我觉得您要尝试做的是错误的。

JSX无法解析对象或函数

如果你只是尝试

render() {
    return (
        <div>
            <p>
                {() => <div>Hello World </div>}
            </p>
        </div>
    );
}
Run Code Online (Sandbox Code Playgroud)

您正在尝试插值或返回作为表示节点不可接受的函数。它应该是jsx可以解析的东西。JSX无法解析对象或函数,因此应由Javascript引擎对其进行解析。

您可以做的是定义您的方法并立即调用该方法,以便函数(iife函数)返回可以由JSX解析的内容。

就像是

render() {
    return (
        <div>
            <p>
                {(() => {<div>Hello World </div>})()}
            </p>
        </div>
    );
}
Run Code Online (Sandbox Code Playgroud)

希望你明白这一点。返回可以由JSX解析的内容。