javascript 通过react props传递函数和参数

mepcadol  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(156)

我有一个下拉菜单,其中包含下拉元素的按钮,按下它们会导致函数调用。

<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()。

kkbh8khc

kkbh8khc1#

必须在changeFilter属性中传递参数。
例如:

<div className="filters-container">
   <Dropdown changeFilter={() => changeFilter(['sort=-Covered_distance'])} />
</div>

下面是一个工作示例:https://codesandbox.io/s/falling-currying-kd0oco?file=/src/App.js
这里的问题是,当你把一个函数作为一个prop传递时,你不能在组件内部改变它们的参数,参数必须从父函数传递。

6tdlim6h

6tdlim6h2#

在changeFilter函数中传递参数['sort =-Covered_distance'],如下所示:

<div className = "filters-container">
   <Dropdown changeFilter={() => changeFilter(['sort=-Covered_distance'])} />
</div

相关问题