【发布时间】:2018-12-13 15:14:34
【问题描述】:
我有一个 react.js 打字稿应用程序,其中有一个组件 (OrganizationsSearch),它从父组件 (Organizations) 接收其道具,而后者又从 redux 接收其道具。
在 OrganizationsSearch 组件中,我像这样初始化状态:
export default class OrganizationsSearch extends React.Component<Props, State> {
constructor(props: Props) {
super(props)
this.state = {
filteredOrganizations: this.props.organizations,
filterQuery: ""
}
}
...
问题是当我通过路由设置导航到组件时,filteredOrganizations 状态不等于props.organizations。 filteredOrganizations 只是一个空数组。
从上面的代码可以看出,我有一个filterQuery 状态属性。此属性附加到输入字段。每当我更改输入时,都会运行一个过滤器函数,该函数会根据此属性更新状态。触发该功能时,状态会正确更新以包含与查询匹配的组织。如果我删除输入字段内容使其等于初始状态值,则过滤的组织状态包含所有组织,因为它最初在组件加载时也应该这样做。
如何将初始状态设置为等于道具?
【问题讨论】:
-
如果您希望状态主动反映更新的道具,则不应在构造函数中使用道具设置状态。只需使用
render中的道具