0

例如:

function Avatar(props) {
  return (
    <img className="Avatar"
      src={props.user.avatarUrl}
      alt={props.user.name}
    />
  );
}

function Comment(props) {
  return (
    <div className="Comment">
      <div className="UserInfo">
        <Avatar user={props.author} />
        <div className="UserInfo-name">
          {props.author.name}

为什么我不能使用 {Avatar(props.author)} 或 {Avatar() user={props.author}}?我知道我可以在花括号中使用函数,它是如何工作的?

4

2 回答 2

1

我找到了答案:将 function 声明为<Component/>,使其对 React 可见,并允许您使用生命周期方法和钩子。如果你将它用作函数:React 只看到从它返回的结果,但它的工作速度快了约 45 倍。

感谢大家的帮助!

于 2021-01-31T10:58:18.633 回答
0

好吧,如果孩子收到 props 并返回jsx,它将被视为 React Element 或 React Node,在这种情况下,您可以像<Avatar user={props.author} />.

如果你想在里面使用函数,Comment就像这样:

function renderAvatar(author) {
     return ...
}

Comment零件

   <div>
      {renderAvatar(props.author)}
   </div>
于 2021-01-31T10:17:25.577 回答