[英]Passing properties from a dynamic Child component to a Parent functional component through a functions parameters react-native
[英]React Redux passing parameters via functions from child components to parent
我对此提出了一个问题 ,我相信回答该问题的丹尼斯给出了我认为正确的答案。 我无法弄清楚如何将变量正确地传递回父函数...
这是我要修复的代码。
子组件的子组件
首先,有一个子组件的子组件。 如果单击列表,将设置列表的排序方向。 它使用“ onSortDirectionChange”功能,并应通过设置变量“ sortDirection”来设置排序方向。
const GlyphiconDirectionChange = (props) => {
const { onSortDirectionChange } = props
return (
<span>
{onSortDirectionChange === 'Ascending' ?
<span onClick={() => onSortDirectionChange('Ascending')} className='glyphicon glyphicon-sort-by-attributes'></span>
:
<span onClick={() => onSortDirectionChange('Descending')} className='glyphicon glyphicon-sort-by-attributes-alt'></span>
}
</span>
)
}
单击标题名称旁边的glyphicon,它将更改列表的方向。 简单的组件。
子组件
它的父级,但“ ClientContainer”的子级是TableHeaders。 “ GlyphiconDirectionChange”位于此组件中,以显示您可以单击的向上或向下的glyphicon。
<GlyphiconDirectionChange onSortDirectionChange={onSortDirectionChange} />
父组件
ClientContainer是最重要的组件(操作等稍后将分拆-为了简单起见,它们现在位于其中)。 在这里,TableHeaders显示如下:
<TableHeaders onSortByChange={this.handleSortBy}
onSortDirectionChange={this.handleSortDirection}
query={query}
currentPage={currentPage}
注意第二行是底部组件的功能。
它指的是“ HandleSortDirection”。
handleSortDirection = (values = {}) => {
const { sortDirection, query, sortBy } = this.props
values.query = values.query || ''
const searchParams = {
query,
sortBy,
sortDirection,
...values,
currentPage: 1,
}
console.log('changeHeaders()!', values, searchParams)
this.fetchClients(searchParams)
}
问题如何在“子组件的子组件”中设置变量,然后将其移动到“ HandleSortDirection”函数中。
我收到错误
未捕获的TypeError:无法在字符串“ Descending”上创建属性“ query”
我需要将“ searchParams”变量“ sortDirection”设置为“ Ascending”或“ Descending”并在我的函数中正确使用。
如何将我的sortDirection变量正确传递给父级中的函数。
“如何在“子组件的子组件”中设置变量,然后将其移动到“ HandleSortDirection”函数中。”
您已经在执行此操作,但是有错字。
values.query = values.query || ''
这行错误,因为values
等于'Descending'
。 您正在从子组件的子组件中传入一个字符串,并一直沿回调链传递直到到达此处。
删除该行,并用const direction = values;
代替const direction = values;
然后在searchParams中传递direction
代替sortDirection,
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.