我有一个组件按钮和按钮内部,我有一个组件图标,我试图通过useState,但它不影响在父组件的所有状态。我有一个主组件头,我有标题和组件图标,我不会改变取决于哪个按钮将被点击。例如,如果我点击带有home图标的按钮-如果云将更改为cloud,则下一个Header标题图标将更改为home。
Header.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>
);
};
Button.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>
);
};