【发布时间】:2020-09-18 18:52:11
【问题描述】:
假设我有一组用于设置初始状态的汽车:
const [ carState, setCarstate ] = useState({
cars: [
{model: 'Ferarri', yearOfFabrication: 2001},
{model: 'Toyota', yearOfFabrication: 2005},
{model: 'Tesla', yearOfFabrication: 2017},
{model: 'Ford Mustang', yearOfFabrication: 2003}
]
});
谁能解释一下为什么下面的代码没有显示任何汽车?
{carState.cars.map(car => {<Car model={car.model} age={car.yearOfFabrication}/>})}
而这个工作正常吗?
{carState.cars.map(car => <Car model={car.model} age={car.yearOfFabrication}/>)}
这两段代码之间的唯一区别是,第一段将返回值封装在一段代码中。所以也许这不是一个 React 问题,而是一个 ES6 箭头函数问题?
另外,请考虑以下通过 props 传递方法引用的组件:
<Input handler={() => changeCarNameHandler}/>
这并没有按预期工作,因为它应该在更改事件时调用 changeCarNameHandler 方法,这是组件代码:
const input = props => {
return(
<input onChange={props.handler}></input>
)
}
但是,这是有效的
<Input handler={(event) => changeCarNameHandler(event)}/>
有人可以澄清一下吗?如果您还可以提供一些资源让我可以阅读更多相关信息,我们将不胜感激。
【问题讨论】:
-
.map(car => { <Car /> })缺少return语句,因此返回undefined。与此同时,.map(car => <Car />)实际上返回了 JSX。 -
有道理,谢谢!
标签: javascript reactjs ecmascript-6 arrow-functions