【问题标题】:TypeError: Cannot convert undefined or null to object React js material-tableTypeError:无法将 undefined 或 null 转换为对象 React js 材料表
【发布时间】:2020-05-03 07:25:09
【问题描述】:
 {
        title: 'Stores', field: 'Depolar',
        editComponent: props => (
          <Select
            name="Depolar"
            type="text"
            value={that.state.selectedStores}
            multiple
            input={<Input />}
            onChange={e => {

                that.setState({
                  selectedStores:e.target.value
                })
            let store=that.state.stores.find(item => !that.state.selectedStores.includes(item.Adi)

            )
              Object.keys(store.Urunler).map(function (key,index) {
                if(store.Urunler[key]){
                that.setState({
                  products:that.state.products.push(store.Urunler[key])

                 });
                }

              })
              console.log(that.state.products)






          }}
          >
            {that.state.stores.map(item=> {
              return <MenuItem value={item.Adi}>{item.Adi}</MenuItem>
            })}
          </Select>
        )
      },
      {
        title: 'Products', field: 'Urunler',
        editComponent: props => (
          <Select
            name="Urunler"
            type="text"
            value={that.state.selectedProducts}
            input={<Input />}
            multiple
            onChange={e => {               
                that.setState({selectedProducts:e.target.value})

            }}
          >
            {/* Aşağıdaki mapde hata veriyor. Objecte çevir*/}
            {that.state.products ? Object.keys(that.state.products).map(function (key,index) {
              return <div><MenuItem value={that.state.products[key].Adi}>{that.state.products[key].Adi} </MenuItem></div>
            }
            ):null}
          </Select>
        )},

出现错误。我尝试使用材料表行上的第一个 Select 的 Onchange 进行多项选择并更改第二个选择的数据。 我正在使用火力基地。

当“store.Urunler”为空或未定义时,我会收到此错误。而且我的产品没有在 MenuItem 上列出意味着 Select 是 Empty 但 state.products 有数据

我怎样才能克服这个错误。我还想添加到 Urunler 选择一个输入。我知道我应该为 onChanges 调用函数,但如果它有效,我会稍后再做

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:
    {
            title: 'Stores', field: 'Depolar',
            editComponent: props => (
              <Select
                name="Depolar"
                type="text"
                value={that.state.selectedStores}
                multiple
                input={<Input />}
                onChange={async e => {
                  let odata=[]
    
                    this.setState({
                      selectedStores:e.target.value,
                      products:odata
                    })
                let store= await that.state.stores.filter(item => (
                  !that.state.selectedStores.includes(item.Adi))
            );
            console.log(store)
             this.changeProducts(store);}}
              >
                {that.state.stores.map(item=> {
                  return <MenuItem value={item.Adi}>{item.Adi}</MenuItem>
                })}
              </Select>
            )
          },
          {
            title: 'Products', field: 'Urunler',
            editComponent: props => (
              <Select
                name="Urunler"
                type="text"
                value={that.state.selectedProducts}
                input={<Input />}
                multiple
                onChange={e => {               
                    that.setState({selectedProducts:e.target.value})
    
    
                }}
              >
                {/* Aşağıdaki mapde hata veriyor. Objecte çevir*/}
                {that.state.products ? Object.keys(that.state.products).map(function (key,index) {
                  return <div><MenuItem value={that.state.products[key].Adi}>{that.state.products[key].Adi} </MenuItem></div>
                }
                ):null}
              </Select>
            )
          },
    
    changeProducts( store){
    var that=this;
    Object.keys(store).map(function (key,index) {
      let data=store[key].Urunler;
      if(data){
       that.setState({
        products:{...that.state.products,...data}
    
       });
      }
    
    })
    

    }

    【讨论】:

    • 实际选择的商店使用 on setstate 和 this.state 所以状态不能正常工作。应该分配它的价值和改变包括不!that.state.selectedStores.includes(item.Adi) to that.state.selectedStores.includes(item.Adi)
    猜你喜欢
    • 2019-10-25
    • 2020-08-02
    • 2021-12-07
    • 2022-10-24
    • 2023-01-20
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多