【问题标题】:ComboSelection MaterialUI ReactJs Api DataComboSelection MaterialUI ReactJs Api 数据
【发布时间】:2019-07-04 21:57:41
【问题描述】:

我是新手,我正在使用材料 ui(组件)组合框来显示来自 API 的选定数据。

这是我的代码:

this.state = { data: [] , dataValue: ''}

componentDidMount() {
    this.props.getAllData().then(data => this.setState({data})}

 render() {
     return (
         <FormControl variant="filled">
         <InputLabel htmlFor="filled-age-native-simple">DATA</InputLabel>
  <Select
   native
   value={this.state.dataValue}
   onChange={this.handleChange('dataValue')}
   input={<FilledInput name="dataValue" id="filled-age-native-simple" />}>
   // Problem solved
  {this.state.data.map(dataV => {
      return (
            <option value={dataV.id}> {dataV.name} </option>
          );
    })}

   </Select>
</FormControl>

每次您选择一个值时,都会为该状态分配一个 id。

通过实现这个,我得到这个错误:

提供给Select 的无效道具children,应为ReactNode。
在 Select(由 Context.Consumer 创建)

有谁知道如何解决这个问题?谢谢

【问题讨论】:

    标签: reactjs material-ui


    【解决方案1】:

    当您初始化状态时 - 您只能使用手头的值来执行此操作,可以这么说。您不能像您尝试那样使用基于承诺的值:

    this.state = { data: this.props.getAllData(), dataValue: ''}
    

    其次,当你渲染组件时,你还需要手头的所有数据来渲染。具体来说,您不能这样做:

    render() {
        return <el>{this.state.data.then(...
    

    如果您需要在组件中处理异步数据调用,则应使用 componentDidMount 函数(或构造函数)来发起调用。

    例如:

    componentDidMount() {
        this.props.getMyData().then(data => this.setState({data}) )
    }
    

    在调用 setState 时,这将触发您的组件的重新渲染,并可以利用您刚刚存储在 state 中的数据。

    【讨论】:

    • 我完成了更改,尝试像这样设置选项值 {this.state.data.map(dataV => {
    • 可能是错字?值={dataV.id}
    • 我试过了,即使在map里面声明了,依然是空的。
    • 好的,那么你的数据数组可能是空的 - 你的渲染函数中的 console.log(this.state.data) 要检查
    • 我做了,它变空了,空了,然后是数据,这很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多