javascript - 单击更改图像 - 反应
问题描述
例如,这是我的观点:
<div>
<img src='../../minus.png' />
</div>
现在我想在每次单击时将图像从 更改plus.png
为minus.png
。
因此,单击一次:minus.png => plus.png
,再次单击:plus.png => minus.png
,依此类推。我怎样才能做到这一点?
解决方案
这可以通过一个简单的切换处理程序来实现:
const imagesPath = {
minus: "https://images.vexels.com/media/users/3/131484/isolated/preview/a432fa4062ed3d68771db7c1d65ee885-minus-inside-circle-icon-by-vexels.png",
plus: "https://cdn3.iconfinder.com/data/icons/glypho-generic-icons/64/plus-big-512.png"
}
class App extends React.Component {
state = {
open: true
}
toggleImage = () => {
this.setState(state => ({ open: !state.open }))
}
getImageName = () => this.state.open ? 'plus' : 'minus'
render() {
const imageName = this.getImageName();
return (
<div>
<img style={{maxWidth: '50px'}} src={imagesPath[imageName]} onClick={this.toggleImage} />
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
编辑
请注意,我传递了一个函数参数,setState
因为我的新状态取决于旧状态。您可以在文档中阅读更多相关信息
推荐阅读
- c# - 无法从 ASP.NET HttpContext 访问 JWT 声明
- python - 关闭安装向导后激活“python禁用路径长度限制”选项
- javascript - 如何将字符串转换为获取元素并在每个元素之后组合它们的数组?
- julia - 如何将分区的 Apache Arrow 或 Parquet 文件读入/写出 Julia
- kubernetes - k8s 主节点重启后 Flink 崩溃
- youtube-api - YouTube API 属性 - 考虑从私有更改为公共的最新视频发布日期
- python-3.x - 为什么我收到此“NameError:未定义名称'trainingData'”
- laravel - 返回分组结果数组
- wordpress - WooCommerce 预付款
- api - 如何根据规范验证面向公众的 api url 和响应