React:期望一个赋值或函数调用,而是看到一个表达式

Use*_*781 14 jsx reactjs

我试图const def = (props) => {在下面的示例代码中修复此lint错误.

const propTypes = {
prop1: PropTypes.string,
prop2: PropTypes.string,
prop3: PropTypes.string,
prop4: PropTypes.string,
prop5: PropTypes.string,
}

const abc = (props) => {
some code here }

const def = (props) => {
<div>
<div className=" ..some classes..">{abc}</div>
<div className=" ..some classes..">{t('translation/something')}</div>

<div ...>
  <someComponent 
    do something
  />

if (some condition) {
do this
} else {
do that
}

</div>

};
Run Code Online (Sandbox Code Playgroud)

知道为什么我得到这个lint错误?

G4b*_*i3l 26

您没有返回任何内容,至少从您的代码段和评论中返回.

const def = (props) => { <div></div> };

这不会返回任何内容,您使用花括号包装箭头函数的主体,但没有返回值.

const def = (props) => { return (<div></div>); }; 要么 const def = (props) => <div></div>;

另一方面,这两个解决方案返回一个有效的React组件.还要记住,在你的内部jsx(如@Adam所述)你不能if ... else ...只有三元运算符.


Ste*_*ven 18

期望赋值或函数调用,却看到了一个表达式。

我在这段代码中遇到了类似的错误:

const mapStateToProps = (state) => {
    players: state
}
Run Code Online (Sandbox Code Playgroud)

为了更正我需要做的就是在弯曲的括号周围添加括号

const mapStateToProps = (state) => ({
    players: state
});
Run Code Online (Sandbox Code Playgroud)

  • 这样做的理由是什么? (2认同)

ruw*_*nka 9

return 语句应该放在一行中。或者另一种选择是删除绑定 HTML 语句的大括号。

例子:

return posts.map((post, index) =>
    <div key={index}>
      <h3>{post.title}</h3>
      <p>{post.body}</p>
    </div>
);
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。我收到了同样的消息,因为我有一个 .map 并且我使用 {} 而不是 () 返回组件/jsx 谢谢! (2认同)

MD *_*YON 8

你必须返回一些东西

而不是这个(这不是正确的方法)

const def = (props) => { <div></div> };
Run Code Online (Sandbox Code Playgroud)

尝试

const def = (props) => ( <div></div> );
Run Code Online (Sandbox Code Playgroud)

或使用 return 语句

const def = (props) => { return  <div></div> };
Run Code Online (Sandbox Code Playgroud)