reactjs - 试图弄清楚将其从组件转换为 ReactJS 中的函数,但我被卡住了
问题描述
我需要底部代码才能使用顶部。上面的代码本来是一个组件,但我把它改成了一个函数,但我不知道如何处理下面的代码。
const listLocations = locations.map((place, id) => {
console.log(place.name)
return (
<p key={id} onClick={showLocation}>{place.name}</p>
)
})
const showLocation = (place) => {
if (this.state[place.id] === "hidden") {
this.setState(this.defaultState)
this.setState({ [place.id]: "", currentLocation: place })
} else {
this.setState({[place.id]: "hidden", currentLocation: {}})
}
}
解决方案
const listLocations = locations.map((place, id) => {
return (
<p key={id} onClick={() => showLocation(place)}>{place.name}</p>
)
})
const showLocation = (place) => {
if (this.state[place.id] === "hidden") {
this.setState(this.defaultState)
this.setState({ [place.id]: "", currentLocation: place })
} else {
this.setState({[place.id]: "hidden", currentLocation: {}})
}
}
您的 onClick 被作为 lambda 传递,没有任何关于被点击位置的信息。我将其更改为从上下文中获取该信息的 lambda。试试看,让我们知道它是否有效。
请记住格式化/缩进您的代码以使其更具可读性:)
推荐阅读
- django - 如何将查询集合并为一个结果而不重复?
- c++ - 我有一个关于递归的堆栈问题
- javascript - 从 .gs 函数中获取一个 html 表并在 .html 正文中调用它
- oracle - Liquibase 3.7.0 为具有 autoIncrement 的列生成错误的“createTable”SQL 语句缺少“GENERATED BY DEFAULT AS IDENTITY”
- sql - SQL将所有列插入具有第二列常量的表中
- python - 检查数组 A 中的元素是否属于数组 B
- xcode11 - 仅将标题分配给 navigationItem 时,UITest searchBar 检测在 Xcode 11.1 中失败
- mysql - [ODBC 目标 [16]]:尝试获取架构信息时出错。该表没有支撑柱
- java - Java 将字符串评估为表达式或代码执行
- itext - pdfHTML 可以处理动态生成的 HTML 内容吗?