javascript - 在另一个函数中调用一个函数被转移到另一个组件
问题描述
performSearch ()
我的目标是通过单击div
组件来调用该函数Item
。该performSerach ()
函数被放置在另一个select ()
函数中。该select ()
函数被传递给Item
组件。在 console.log 中返回 me active = null
。
项目
class Items extends Component {
constructor (props) {
super(props);
this.state = {
items: [],
active: null,
abc: null
}
}
select = (id) => {
this.setState({
abc: id
})
this.performSearch(id);
}
componentDidMount() {
axios.get
axios({
url,
method: "GET",
headers: {
'Authorization': `Bearer ${token}`
}
})
.then(res => {
this.setState({
items: res.data
});
})
.catch(error => {
console.log(error);
})
}
performSearch = (id) => {
axios.get
axios({
url: `https://app.com/api/v1/${id}`,
method: "GET",
headers: {
'Authorization': `Bearer ${token}`
}
})
.then(res => {
this.setState({
active: res.data
});
})
.catch(error => {
console.log(error);
})
}
render () {
<div>
{this.state.items.map((item, index) =>
<Item
select={this.select}
/>
)}
</div>
}
}
物品
class Item extends Component {
render () {
return (
<div onClick={()=> this.props.select(this.props.item.id)}>
</div>
)
}
}
解决方案
render () {
<div>
{this.state.items.map((item, index) =>
<Item
select={this.select}
/>
)}
</div>
}
应该将项目传递给Item
组件:
render () {
<div>
{this.state.items.map((item, index) =>
<Item
select={this.select}
item={item}
key={index}
/>
)}
</div>
}
或者:
render () {
<div>
{this.state.items.map((item, index) =>
<Item
select={() => this.select(item.id)}
/>
)}
</div>
}
推荐阅读
- ios - 我可以使用 Xcode 9 打开使用 Xcode 11 创建的项目吗?
- macos - 在 macOS 上更改 libpcap 版本(Apple 删除了一项功能)
- zabbix - Zabbix web 场景调试
- handlebars.js - 在车把模板中使用脚本文件中的数据
- ios - iOS 13.2 中的 NSLocalizedString 加载键返回键(其他 iOS 版本工作正常,为什么?)
- javascript - 如何从 xlsx 中提取带有单元格信息的图像?
- elasticsearch - LOGSTASH 中的多个 IF ELSE 条件与和操作员
- javascript - 在 express 中将数据传递给加载了 res.redirect 的视图
- oracle - 交互式报告中的 Apex 项目未正确显示
- python - 并非所有 ascii_lowercase 组合都生成