【发布时间】:2021-03-05 01:31:43
【问题描述】:
我有一个消息数组,这些消息通过 array.map 和 key=index(在数组中)呈现为反应组件。数组被保存到一个状态。当我单击消息组件中的按钮时,我希望消息关闭。我考虑过将 key 变量传递给 Messages 组件,这样我就可以通过调用 target.key 在 closeMessage 函数中使用它,但是当我调用 key 属性时,我只会得到未定义。知道我该怎么做吗?提前致谢!
function Register () {
const [errors, setErrors] = useState([{ msg: 'abc' }, { msg: 'cde' }]);
const closeMessage = ({target}) => {
setErrors(errors => errors.splice(target.key, 1));
}
return (
<div className="register-container">
<h1>Register</h1>
{errors.map((error, index) => <Messages alert="warning" msg={error.msg} key={index} close={closeMessage}/>)}
</div>
)
};
function Messages (props) {
return(
<div className={'message '+props.alert} key={props.key} onClick={props.close}>
{props.msg}
<button type="button" className="message-close">
<span>×</span>
</button>
</div>
)
}
【问题讨论】:
标签: javascript arrays reactjs state splice