React 组件不使用大括号渲染

IT技术 javascript reactjs
2021-05-03 14:50:12

我的react组件没有用大括号呈现,这是代码:https : //jsfiddle.net/69z2wepo/21704/

class R1 extends React.Component {

    render() {
        return (
            <div className="r1">
                {this.props.data.map( datum => 
                    <h1 key={datum}> {datum} </h1>
                )}
            </div>
        );
    }
}

class R2 extends React.Component {
    render() {
        return (
            <div className="r2">
                {this.props.data.map( datum => {
                    <h1 key={datum}> {datum} </h1>
                })}
            </div>
        );
    }
}

请注意,R1 和 R2 组件之间的唯一区别是 R1 在映射中的“=>”之后不使用 {},而 R2 使用。R1 工作正常,但 R2 不渲染任何东西。

我对 javascript 和 react(来自 C/C++)很陌生,我认为对于多行块,应该包含 {}。但这显然在这里不起作用。

只是想知道这是 javascript 特定的语法问题还是与 React 相关的问题?在函数映射中使用 {} 有什么问题。

PS:在实际代码中,如果有任何区别,我使用不可变列表而不是普通的 javascript 列表。

2个回答

您的第二个示例的map回调不返回任何内容。

如果您的方法主体包含单个语句,则可以省略{}并且将返回表达式的结果。使用x => x * 2很好,并且会返回一个值。

如果{}在方法体周围包含则不能省略return关键字,无论{}. Usingx => { x * 2 }不会返回任何内容,因为方法主体不包含 return 语句。

举例来说:

fn = x => x * 2
console.log(fn(3)) // 6

fn = x => { x * 2 }
console.log(fn(3)) // undefined

fn = x => { return x * 2 }
console.log(fn(3)) // 6

由于您使用的是 ES6,因此主要语法类似于

functionName() => {
    /* Code/Actions goes here */
}