[英]How to use function inside JSX
我目前正在阅读 React 官方网站,在那里我遇到了这个问题。 React 官网声明我们可以在 JSX 内部使用函数代码。 因此,我尝试了以下代码,但它不起作用。
类 ABCD 扩展 React.Component {
render() {
return (
<div>
<p>
{() => <div>Hello World </div>}
</p>
</div>
);
}
}
我知道,我知道,你们中的一些人可能会说看 React 网站上给出的例子。 我看到了,官网给出的例子涉及到外部函数。 我只是想知道我们可以独立使用 JSX 内部的函数。
有关其他信息,请参阅此链接: https : //reactjs.org/docs/jsx-in-depth.html
因为我觉得你试图做的事情是错误的。
JSX 无法解析对象或函数
如果你只是尝试
render() {
return (
<div>
<p>
{() => <div>Hello World </div>}
</p>
</div>
);
}
您正在尝试插入或返回一个不能作为表示节点的函数。 它应该是可以被jsx 解析的东西。 一个对象或一个函数不能被 JSX 解析,它们应该被 Javascript 引擎解析。
你可以做的是定义你的方法并立即调用它,这样函数(iife 函数)就会返回一些可以被 JSX 解析的东西。
类似的东西
render() {
return (
<div>
<p>
{(() => {<div>Hello World </div>})()}
</p>
</div>
);
}
希望你明白这一点。 返回一些可以被 JSX 解析的东西。
只需调用一个返回 JSX 的函数。 例如:
class FooComp extends React.Component {
someFunction() {
return (<div>Hello World!</div>);
}
render() {
return (
<div>
<p>
{this.someFunction()}
</p>
</div>
);
}
}
您可以尝试将其称为立即调用的函数
render() {
return (
<div>
<p>
{(() => <div>Hello World </div>)()}
</p>
</div>
);
}
除了其他答案中提到的立即调用函数外, 文档还提到可以将函数用作props.children(...args)
,可以作为props.children(...args)
调用。
关键是组件最终必须返回一些可渲染的东西:
传递给自定义组件的子组件可以是任何东西,只要该组件在渲染之前将它们转换为 React 可以理解的东西。 这种用法并不常见,但如果您想扩展 JSX 的功能,它就可以使用。
尽管从您的问题中不清楚您是想在 jsx 中定义一个函数还是想从 jsx 调用函数。 如果你想在 jsx 中定义你的函数,那么你应该使用:
class ABCD extends React.Component {
render() {
return (
<div>
<p>
{(() => {<div>Hello World </div>})()}
</p>
</div>
);
}
}
如果你想从你的 jsx 调用一个函数,那么你应该使用:
class ABCD extends React.Component {
show() {
return (<div>Hello World!</div>);
}
render() {
return (
<div>
<p>
{this.show()}
</p>
</div>
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.