ReactJS中应有赋值或函数调用错误[重复]

czq61nw1  于 2023-01-30  发布在  React
关注(0)|答案(2)|浏览(93)
    • 此问题在此处已有答案**:

List elements not rendering in React [duplicate](1个答案)
When should I use a return statement in ES6 arrow functions(6个答案)
React: Expected an assignment or function call and instead saw an expression(12个答案)
两年前关闭了。
这实际上是我尝试在ReactJS中实现的组件
下面是代码片段:

const Leaders=({leaders, isLoading, errMess})=>{
    if (isLoading) {
        return (
            <Loading />
        )
    }
    else if (errMess) {
        return (
            <h4>{errMess}</h4>
        )
    }
    else {
        return (
            leaders.map((leader) => {
                <Stagger in>
                    <Fade in>
                        <Media>
                            <Media object left src={baseUrl + leader.image} alt={leader.name} className='my-image mt-5'></Media>
                            <Media body className="ml-5 mt-0">
                                <Media heading>
                                    {leader.name}
                                </Media>
                                <p className='font-card'>{leader.designation}</p>
                                <p>{leader.description}</p>
                                <hr></hr>
                            </Media>
                        </Media>
                    </Fade>
                </Stagger>})
        )
    }
}

但我得到一个错误:Expected an assignment or function call and instead saw an expression位于else条件的返回部分。
非常希望找到解决此问题的解决方案

gwbalxhn

gwbalxhn1#

看起来您的map函数在末尾没有返回任何内容,因此您必须在jsx中添加return:

leaders.map((leader) => { return <Stagger in> ... // should add return
cidc1ykv

cidc1ykv2#

当箭头函数使用花括号时:

(leader) => {
  // ...
}

...那么大括号之间的每一项都是一个 * 语句 *。您有一个 * 表达式语句 *,它什么也不做:

<Stagger in>...</Stagger>

你需要的是一个 return 语句,它将成为函数的结果,否则,函数会隐式返回undefined,如果你试图呈现一个undefined值,React会弹出一个错误:

return <Stagger in>...<Stagger>

...或者更改arrow函数,使其不使用大括号,这样就可以将 expression 作为主体,从而创建隐式return语句:

(leader) => (
  <Stagger in>
    ...
  </Stagger>
)

相关问题