如何使用 return() 中定义的参数调用 render() 中的函数
How to call a function in render() using a parameter that's defined in return()
我正在努力调用方法 deleteItem
。
这是显示我遇到的问题的沙盒。 https://codesandbox.io/s/frosty-rgb-or7om
如果单击蓝色 delete
按钮,卡片将从视图中删除,这基本上是我需要发生的,除了我正在寻找的行为应该是先单击烤肉串图标,然后使用下拉菜单中的按钮删除。
我在 kebabDropdownItems
const 变量的 DropdownItem
组件中添加了一个 onClick={() => deleteItem(item)
-- 它告诉我 item
没有定义,这是有道理的,因为它是在 map
中定义的。我已经尝试删除 kebabDropdownItems
变量,然后直接使用 onClick
方法将这些组件放在 Dropdown
组件的 dropdownItems
道具中。
但这也不起作用,菜单项根本不显示。我尝试在 render 方法中将卡片数组放入它自己的 const
中,这也没有用。
我错过了什么?
变量项目在this.state.cards.map之外,您需要创建 kebabDropdownItems 作为函数并将项目作为参数传递。我的建议:
// create outside of render
function kebabDropdownItems(onClick) {
return [
<DropdownItem onClick={onClick} position="right">
{" "}
Delete
</DropdownItem>
];
}
// change dropdownItems to
dropdownItems={kebabDropdownItems(this.deleteItem(item))}
当您直接在 Dropdown
组件中定义 DropdownItem
组件时,它会起作用,如下所示:
<Dropdown
isPlain
position="right"
onSelect={e => this.onDropdownSelect(key, e)}
toggle={
<KebabToggle
onToggle={isDropdownOpen =>
this.onDropdownToggle(key, isDropdownOpen)
}
/>
}
isOpen={this.state[key]}
dropdownItems={[
<DropdownItem
onClick={this.deleteItem(item)}
position="right"
>
{" "}
Delete
</DropdownItem>
]}
/>
查看全部codesandbox
我正在努力调用方法 deleteItem
。
这是显示我遇到的问题的沙盒。 https://codesandbox.io/s/frosty-rgb-or7om
如果单击蓝色 delete
按钮,卡片将从视图中删除,这基本上是我需要发生的,除了我正在寻找的行为应该是先单击烤肉串图标,然后使用下拉菜单中的按钮删除。
我在 kebabDropdownItems
const 变量的 DropdownItem
组件中添加了一个 onClick={() => deleteItem(item)
-- 它告诉我 item
没有定义,这是有道理的,因为它是在 map
中定义的。我已经尝试删除 kebabDropdownItems
变量,然后直接使用 onClick
方法将这些组件放在 Dropdown
组件的 dropdownItems
道具中。
但这也不起作用,菜单项根本不显示。我尝试在 render 方法中将卡片数组放入它自己的 const
中,这也没有用。
我错过了什么?
变量项目在this.state.cards.map之外,您需要创建 kebabDropdownItems 作为函数并将项目作为参数传递。我的建议:
// create outside of render
function kebabDropdownItems(onClick) {
return [
<DropdownItem onClick={onClick} position="right">
{" "}
Delete
</DropdownItem>
];
}
// change dropdownItems to
dropdownItems={kebabDropdownItems(this.deleteItem(item))}
当您直接在 Dropdown
组件中定义 DropdownItem
组件时,它会起作用,如下所示:
<Dropdown
isPlain
position="right"
onSelect={e => this.onDropdownSelect(key, e)}
toggle={
<KebabToggle
onToggle={isDropdownOpen =>
this.onDropdownToggle(key, isDropdownOpen)
}
/>
}
isOpen={this.state[key]}
dropdownItems={[
<DropdownItem
onClick={this.deleteItem(item)}
position="right"
>
{" "}
Delete
</DropdownItem>
]}
/>
查看全部codesandbox