javascript - React 如何在点击时更改组件图标外观?
问题描述
我有一个组件按钮,在按钮内部,我有一个组件图标,我正在尝试使用 useState 但它根本不影响父组件中的状态。我有一个主要组件标题,其中有标题和组件图标,我不会根据单击的按钮更改它们。例如,如果我单击带有主页图标的按钮 - 如果云将变为云等,则下一个标题标题图标将变为主页。
页眉.js
import React from 'react';
import Button from 'components/Button';
const Header = (props) => {
return(
<div>
<h4 className="title">
<Icon name={props.titleIcon}/>
Title
</h4>
<div>
);
};
按钮.js
import React,{useState} from 'react';
import { Button } from 'semantic-ui-react';
import { Icon } from 'semantic-ui-react';
const Button = (props) => {
const [icon, setIcon] = useState('home')
const handleClick = ()
=> {
setIcon(props.titleIcon = props.icon)
};
return(
<div>
<Button>
<a href={props.link} target="_blank">
<Icon name={props.icon}/>
{props.name}
</a>
</Button>
</div>
);
};
我如何才能实现更改图标的这种效果?
问候
解决方案
好吧,这个有很多错误:
- 你还没有实际使用过 handleClick 功能
- setIcon 函数参数被用作赋值。未使用实际值
正确的代码可能如下所示:
import React,{useState} from 'react';
import { Button } from 'semantic-ui-react';
import { Icon } from 'semantic-ui-react';
const Button = ({titleIcon, name, link}) => {
const [icon, setIcon] = useState('home')
const handleClick = () => {
setIcon(titleIcon)
};
return(
<div>
<Button onClick={handleClick}>
<a href={link} target="_blank">
<Icon name={icon}/>
{name}
</a>
</Button>
</div>
);
};
推荐阅读
- ios - 当 iOS 应用程序被暂停/杀死并且用户点击通知时如何处理 Firebase 推送通知?
- sql - 显示子级最高层次父级
- kotlin - 如何从 Try in arrow-kt 中抽象出来
- swift - 将 Swift { get set } 属性覆盖为仅 { get } 属性。使变量成为常数
- scala - 如何将 from_json 标准函数与自定义模式一起使用(错误:使用替代方法重载方法值 from_json)?
- python - 摆脱显式超级
- java - 如何添加drawerLayout而不破坏现有的LinerLayout样式?
- javascript - 选项卡在 Bootstrap v4.3.1 中不起作用,但在 v4.1.0 中起作用
- c++ - C++ 重载 += 用于合并返回类型为 void 的两个包
- docker - `Dockerfile` 和 `docker-compose.yml` 之间的冲突/多个启动命令