如何获取持有状态的"activeCat"对象的所有信息?
How do I obtain all the information of the object of the "activeCat" that holds the state?
我正在创建一个应用程序,我试图在其中建立一个已从下拉菜单中选择的“activeCat”。我可以切换“activeCat”的状态,但它只保留猫(对象)的“昵称”。
这是我的 CatList 组件(下拉列表)
import axios from 'axios';
import {Dropdown} from 'react-bootstrap';
export default class CatList extends Component {
constructor(props) {
super(props)
this.state = {
cats: [],
activeCat:''
}
}
onClickHandler = event => {
const activeCat = event.target.innerHTML;
this.setState({ activeCat })
console.log(activeCat)
{this.state.cats.map((cat, index)=>{
console.log(cat, index)
if(index == this.state.activeCat){
console.log(cat._id)
return(
<div >
Hello
</div>
)
}})}
}
componentDidMount() {
this.getCollection('All')
}
//get entire collection
getCollection = (_Id) => {
axios
.get(`http://localhost:5000/api/kittys/getByUserId/${this.props.user._id}`)
.then(res => {
const cats = res.data
this.setState({cats: cats})
})
}
render() {
return (
<div>
<p style={{display:"flex", justifyContent:"center"}}>Selected Cat: {this.state.activeCat}</p>
<Dropdown
style={{display:"flex", justifyContent:"center"}}
className="cat-list">
<Dropdown.Toggle variant="success" id="dropdown-basic">
My Cats
</Dropdown.Toggle>
<Dropdown.Menu>
{this
.state
.cats
.map((kitty, index) => {
return (
<div key={index}>
<Dropdown.Item onClick={this.onClickHandler}>{kitty.nickName}</Dropdown.Item>
</div>
)
})}
</Dropdown.Menu>
</Dropdown>
</div>
)
}
}
这是单击下拉菜单中的第一项 (Minnie) 后我的控制台的图片
CONSOLE AFTER USING THE ONCLICKHANDLER
here is a photo showing the dropdown and selected cat above
我希望能够像我一样在下拉菜单上方显示 ActiveCat 的名称,但我也希望可以使用猫的其余信息。
您可以保存在点击处理程序中传递的所有小猫数据,而不是仅保存小猫名称。
<Dropdown.Item onClick={() => this.onClickHandler(kitty)}>{kitty.nickName}</Dropdown.Item>
然后保存在状态中
onClickHandler = (kitty) => {
this.setState({ activeCat: kitty })
}
然后就可以访问了
<p style={{display:"flex", justifyContent:"center"}}>Selected Cat: {this.state.activeCat.name} {this.state.activeCat.gender}</p>
我正在创建一个应用程序,我试图在其中建立一个已从下拉菜单中选择的“activeCat”。我可以切换“activeCat”的状态,但它只保留猫(对象)的“昵称”。
这是我的 CatList 组件(下拉列表)
import axios from 'axios';
import {Dropdown} from 'react-bootstrap';
export default class CatList extends Component {
constructor(props) {
super(props)
this.state = {
cats: [],
activeCat:''
}
}
onClickHandler = event => {
const activeCat = event.target.innerHTML;
this.setState({ activeCat })
console.log(activeCat)
{this.state.cats.map((cat, index)=>{
console.log(cat, index)
if(index == this.state.activeCat){
console.log(cat._id)
return(
<div >
Hello
</div>
)
}})}
}
componentDidMount() {
this.getCollection('All')
}
//get entire collection
getCollection = (_Id) => {
axios
.get(`http://localhost:5000/api/kittys/getByUserId/${this.props.user._id}`)
.then(res => {
const cats = res.data
this.setState({cats: cats})
})
}
render() {
return (
<div>
<p style={{display:"flex", justifyContent:"center"}}>Selected Cat: {this.state.activeCat}</p>
<Dropdown
style={{display:"flex", justifyContent:"center"}}
className="cat-list">
<Dropdown.Toggle variant="success" id="dropdown-basic">
My Cats
</Dropdown.Toggle>
<Dropdown.Menu>
{this
.state
.cats
.map((kitty, index) => {
return (
<div key={index}>
<Dropdown.Item onClick={this.onClickHandler}>{kitty.nickName}</Dropdown.Item>
</div>
)
})}
</Dropdown.Menu>
</Dropdown>
</div>
)
}
}
这是单击下拉菜单中的第一项 (Minnie) 后我的控制台的图片
CONSOLE AFTER USING THE ONCLICKHANDLER
here is a photo showing the dropdown and selected cat above
我希望能够像我一样在下拉菜单上方显示 ActiveCat 的名称,但我也希望可以使用猫的其余信息。
您可以保存在点击处理程序中传递的所有小猫数据,而不是仅保存小猫名称。
<Dropdown.Item onClick={() => this.onClickHandler(kitty)}>{kitty.nickName}</Dropdown.Item>
然后保存在状态中
onClickHandler = (kitty) => {
this.setState({ activeCat: kitty })
}
然后就可以访问了
<p style={{display:"flex", justifyContent:"center"}}>Selected Cat: {this.state.activeCat.name} {this.state.activeCat.gender}</p>