reactjs - 构造函数中的数组道具为空
问题描述
我有一个带有 prop 的组件,它是一个对象数组。问题是它是空的,constructor()
即使其他具有原始值的道具也被填充了,render()
它也被填充了。为什么会这样,如何在构造函数中传递数组?组件:
import React, { Component } from "react";
import { Dropdown } from "semantic-ui-react"
class SearchableDropdown extends Component {
defaultOptions = []
allOptions = []
constructor(props) {
super(props)
console.log(props.options) //empty here
}
search = (event, { searchQuery }) => {
console.log(searchQuery)
}
render () {
console.log(this.props.options) //but filled here
return (
<Dropdown selection search onSearchChange={this.search} {...this.props}/>
)
}
}
export { SearchableDropdown }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
组件渲染:
<SearchableDropdown name='city' value={city} onChange={this.handleChange} placeholder='City' options={this.props.cities}/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
解决方案
这是因为options
props 需要一段时间才能到达SearchableDropdown
组件。
你需要使用componentWillReceiveProps()
constructor(props) {
super(props)
console.log(props.options) //empty here
this.state = {
options: null, // options should be here
}
}
componentWillReceiveProps(nextProps){
if(nextProps.options !== this.props.options){
this.setState({ options: nextProps.options })
}
}
search = (event, { searchQuery }) => {
console.log(searchQuery)
}
render () {
console.log(this.props.options) //but filled here
return (
<Dropdown selection search onSearchChange={this.search} {...this.props}/>
)
}
}
推荐阅读
- c# - 有没有办法将 Windows 控制台应用程序转换为库,然后从 ac# Web 应用程序 html 链接调用其中一种方法?
- azure - 无法使用 Azure 数据工厂从 Azure 德国存储帐户复制数据
- typescript - 如何使用 TypeScript 访问嵌套的 JSON 属性?
- vba - Do While 循环在 VBA 中不能正确递增
- python - 幼苗的训练实例分割。不同背景下效果更好?
- angular - NativeScript - 跨多个设备的布局和格式化策略
- javascript - 如何按值查找单选按钮以使用另一个元素检查它 - VueJS
- c# - Azure 服务总线消息在传递后可以存活多久?
- sql - Oracle PL SQL 中的 RO 帐户,仅在查询中更改某些单元格的值
- ios - 视图周围未对齐的边框