我有一个下拉菜单,其中包含下拉元素的按钮,按下它们会导致函数调用。
<div className = "dropdown-container">
<button className = "dropdown-button"> Sort </button>
<div className = "dropdown-content">
<button className = "sort-button" onClick={() => changeFilter(['sort=-Covered_distance'])}> Furthest </button>
<button className = "sort-button" onClick={() => changeFilter(['sort=+Covered_distance'])}> Shortest </button>
<button className = "sort-button" onClick={() => changeFilter(['sort=-Duration'])}> Longest </button>
<button className = "sort-button" onClick={() => changeFilter(['sort=+Duration'])}> Fastest </button>
</div>
</div>
我试图清理我的代码,因为我有多个下拉菜单旁边彼此相同的原则。我想使一个React组件,有下拉菜单的结构,但因为我有一个函数调用,我需要通过这个也一样。
<div className = "filters-container">
<Dropdown changeFilter = { () => changeFilter() }/>
</div>
现在,它调用函数changeFilter(),但是其他组件的参数都不会被调用,所以当我按下任何按钮时,它基本上只调用changeFilter()。
2条答案
按热度按时间kkbh8khc1#
必须在
changeFilter
属性中传递参数。例如:
下面是一个工作示例:https://codesandbox.io/s/falling-currying-kd0oco?file=/src/App.js
这里的问题是,当你把一个函数作为一个prop传递时,你不能在组件内部改变它们的参数,参数必须从父函数传递。
6tdlim6h2#
在changeFilter函数中传递参数['sort =-Covered_distance'],如下所示: