主要问题是,您使用相同的状态打开所有工具提示。解决此问题的一种方法是使用工具提示ID。
完整代码:
https://codesandbox.io/s/2vv782j6z0
行动:
export function toogleToolTipAction(id) {
console.log("toogleToolTipAction", id);
return {
type: "TOOGLE_TOOLTIP",
id // here i'm using the tooltip id
};
}
减速器:
case "TOOGLE_TOOLTIP":
return {
...state,
toolTipOpen: action.id // here i'm using the tooltip id
};
容器:
const mapDispatchToProps = dispatch => {
return {
fetchServiceStatus: () => dispatch(getServiceStatusAction()),
toogleToolTip: id => dispatch(toogleToolTipAction(id)), // here i'm using the tooltip id
dummy: () => dispatch(toogleToolTipAction())
};
};
组成部分:
toggleToolTip = (id, e) => {
if (e.type === "mouseout") {
this.props.toogleTooltip(null);
} else {
this.props.toogleTooltip(id);
}
};
和
return (
<span key={index}>
<Tooltip
placement="top"
isOpen={this.props.toolTipOpen === serviceName + "-" + index}
target={serviceName + "-" + index}
toggle={this.toggleToolTip.bind(this, serviceName + "-" + index)}
>
{toolTipText}
</Tooltip>
</span>
);