Javascript 单击时将道具传递给子组件
根据单击的链接,我想更新Javascript 单击时将道具传递给子组件,javascript,reactjs,react-router,Javascript,Reactjs,React Router,根据单击的链接,我想更新MapImage组件中的img src import React from 'react' import NavLink from './NavLink' var MapImage = React.createClass({ render: function() { return <img src={'./img/' + this.props.img + '.png'} /> } }); export default React.creat
MapImage
组件中的img src
import React from 'react'
import NavLink from './NavLink'
var MapImage = React.createClass({
render: function() {
return <img src={'./img/' + this.props.img + '.png'} />
}
});
export default React.createClass({
getInitialState: function () {
return { img: '1' }
},
loadImage: function () {
this.setState({
img: this.props.img
});
},
render() {
return (
<div>
<h2>Maps</h2>
<ul>
<li><NavLink onClick={this.loadImage} to="/maps/firstfloor" img='1'>1st Floor</NavLink></li>
<li><NavLink onClick={this.loadImage} to="/maps/secondfloor" img='2'>2nd Floor</NavLink></li>
<li><NavLink onClick={this.loadImage} to="/maps/thirdfloor" img='3' >3rd Floor</NavLink></li>
</ul>
{this.props.children}
<MapImage img={this.state.img} />
</div>
)
}
})
从“React”导入React
从“/NavLink”导入NavLink
var MapImage=React.createClass({
render:function(){
返回
}
});
导出默认的React.createClass({
getInitialState:函数(){
返回{img:'1'}
},
loadImage:函数(){
这是我的国家({
img:this.props.img
});
},
render(){
返回(
地图
- 一楼
- 二楼
- 三楼
{this.props.children}
)
}
})
图像src更新为
/img/undefined.png
当您执行以下操作时,道具中没有该图像值:
this.setState({
img: this.props.img
});
尝试将参数传递给loadImage
函数,并在setState
中使用它:
// in JSX
onClick={ function () { this.loadImage(1); } }
// function
loadImage: function (img) {
this.setState({
img: img
});
}
对于每个导航链接图像
通常,我建议使用一个数组并对其进行迭代,如:
var images = [{
value: 'firstfloor',
text: '1st Floor'
},
{ ... // other objects }]
然后像这样迭代(或根据逻辑更改值):
{
images.map((图像,索引)=>{
返回(
{image.text}
);
});
}
当您执行以下操作时,道具中没有该图像值:
this.setState({
img: this.props.img
});
尝试将参数传递给loadImage
函数,并在setState
中使用它:
// in JSX
onClick={ function () { this.loadImage(1); } }
// function
loadImage: function (img) {
this.setState({
img: img
});
}
对于每个导航链接图像
通常,我建议使用一个数组并对其进行迭代,如:
var images = [{
value: 'firstfloor',
text: '1st Floor'
},
{ ... // other objects }]
然后像这样迭代(或根据逻辑更改值):
{
images.map((图像,索引)=>{
返回(
{image.text}
);
});
}
您的问题在哪里?具体问题是什么?您正在将状态正确地传递给MapImage
。您是否收到错误?抱歉--img值未定义。是否引发此错误?是否在loadImage
功能中<此函数中的code>this.props.img假定道具是从另一个父组件(或状态容器,如果您正在使用一个)传递到此组件的。我假设您正试图从NavLink
组件onClick
访问img={/*Number*/}
?如果是这样,您必须将其绑定或传递到loadImage
。没有引发错误,src只是设置为“img/undefined.png”。有趣的是,在第二次单击时,确实设置了参数,但是映像路径现在不是(根目录),您的问题在哪里?具体问题是什么?您正在将状态正确地传递给MapImage
。您是否收到错误?抱歉--img值未定义。是否引发此错误?是否在loadImage
功能中<此函数中的code>this.props.img假定道具是从另一个父组件(或状态容器,如果您正在使用一个)传递到此组件的。我假设您正试图从NavLink
组件onClick
访问img={/*Number*/}
?如果是这样,您必须将其绑定或传递到loadImage
。没有引发错误,src只是设置为“img/undefined.png”。有趣的是,在第二次单击时,确实设置了参数,但是映像路径现在不是(根目录)