【发布时间】:2021-02-15 15:09:36
【问题描述】:
在 React 中,我创建了一个包含本地弹出状态的组件。在 onClick 处理程序的帮助下,我更改了本地状态以显示弹出窗口。 Popup 组件又包含确认按钮。我只想在单击确认按钮后调用函数 deleteItem 。但我不知道该怎么做。在下面的代码中,项目在弹出窗口出现后立即被删除,但只有当我按下 Popup 组件中的按钮时才需要删除它。如果我理解正确,当弹出窗口出现时组件的状态会发生变化,我必须将它传给 MainComponent,只有在这种情况下才会调用函数 deleteItem。
import {deleteItem} from './item-reducer';
const MainComponent = ({items}) => {
const [visiblePopup, setVisiblePopup] = useState(false);
return(
{items.map(item => <li key={item.id}></li>
<img onClick={() => {
setVisiblePopup(true);
deleteList(item.id) // I have to call this function after the button
in the Popup component is pressed
}}
/>
)}
<Popup setVisiblePopup={setVisiblePopup}
)
}
Popup.jsx
<div onClick={() => setVisiblePopup(false)} />
Confirm
</div>
我必须完成的事情 1) 我点击 img 并弹出窗口 2) 我按 '确认' 3) 函数 deleteItem 被调用 4) 弹出窗口消失。
【问题讨论】:
-
onClick={ () => { setVisiblePopUp(true); deleteList(item.id); } }应该做你的情况,你只是在错误的地方错过了一个大括号 =) -
@Halil Cakar 谢谢,我修好了。但事实并非如此。我的意思是,只有在单击弹出窗口中的按钮后,我才应该删除列表(item.id)。
-
@brad_fresh 使用方括号语法
onClick={() => [setVisiblePopup(true), deleteList(item.id)] -
您好,请在Minimal, Complete, and Reproducible 示例中包含all 相关代码。我没有看到任何操作被分派到商店,没有组件连接到商店,也没有看到 Popup(不是完整的、有效的组件代码)与
MainComponent的关系。如果Popup是一个单独的组件,它不能调用MainComponent的setVisiblePopup状态更新函数。我们需要更多背景信息。 -
@Drew Reese 立即查看!我试图添加更广泛的描述。
标签: reactjs components