无法读取小写react js

缺口

我使用 react 为我的数据构建过滤搜索。一切正常,但后来出现错误:

未捕获(承诺)类型错误:无法读取未定义的属性“toLowerCase”。

当我将状态搜索更新为 null 时,错误变为

'toLowerCase' 为 null。

但是当我把它作为一个空字符串时,错误变成了undefined.

就像我说的,一切正常,这个错误突然出现,我需要你的帮助

这是代码

var React = require('react');
var firebase = require('firebase');
var $ = require('jquery');
var axios = require('axios');
var notify = require('bootstrap-notify');
var {Link} = require('react-router');

var SuppliersList = React.createClass({

  getInitialState: function(event){
    return{
      search:'Nicolas',
      data: [],
    }
  },
  updateSearch : function(event) {
    //this.setState({search: event.target.value.substr(0, 20)});
  },
  componentDidMount: function(){
    firebase.database().ref('/suppliers/').once('value').then(function(snapshot) {
      var arr = Object.values(snapshot.val());
      this.setState({data: arr,activity:false});
    }.bind(this));
  },

  render: function () {
    var filteredSuppliers = this.state.data.filter(
      (item) => {
        return item.name.toLowerCase().indexOf(
          this.state.search.toLowerCase()) !== -1;
      }
    )

      var items = filteredSuppliers.map((item, i)=>
      <tr key={item.id}>
       <td>{item.name}</td>
       <td>{item.email}</td>
       <td>{item.phone}</td>

     <td><Link className="btn btn-primary" to={'/edit/'+item.id}>Edit</Link></td>
   <td><Link className="btn btn-danger" to={'/delete/'+item.id}>Delete</Link></td>
        <td><a href="#" className="btn btn-warning" role="button" data-title="johnny" data-id="1">Favourite</a></td>
     </tr>
      );
    return (
       <div>
         <div style={{marginLeft:'50%'}} className="loader"></div>
       <input type="text" value={this.state.search} style={{marginTop:20}} placeholder="search a supplier" onChange={this.updateSearch} className="form-control" id="usr"/>

       <table className="table table-striped table-hover table-users">
         <thead>
           <tr>
             <th>Name</th>
             <th>Email</th>
             <th>Phone</th>
             <th></th>
             <th></th>
           </tr>
         </thead>

         <tbody>
           {items}
         </tbody>
       </table>
</div>

    )},
});

var Suppliers = React.createClass({
  render: function(){
    return (
      <div>
        <nav className="navbar navbar-default navbar-fixed">
          <div className="container-fluid">
            <div className="navbar-header">

              <button type="button" className="navbar-toggle" data-toggle="collapse" data-target="#navigation-example-2">
                <a href="#/branch">
                  <i className="fa fa-store"></i>
                </a>
              </button>

              <button type="button" className="navbar-toggle" data-toggle="collapse" data-target="#navigation-example-2">
                <a href="#/delete">
                  <i className="fa fa-trash"></i>
                </a>
              </button>

              <button type="button" className="navbar-toggle" data-toggle="collapse" data-target="#navigation-example-2">
                <a href="#/edit">
                  <i className="fa fa-edit"></i>
                </a>
              </button>

              <button type="button" className="navbar-toggle" data-toggle="collapse" data-target="#navigation-example-2">
                <a href="#/add">
                  <i className="fa fa-plus"></i>
                </a>
              </button>

              <a className="navbar-brand" href="#">Suppliers</a>
            </div>
            <div className="collapse navbar-collapse">
              <ul className="nav navbar-nav navbar-left">

              </ul>
              <ul className="nav navbar-nav navbar-right">
                <li>
                   <a href="#/add">
                      <i className="fa fa-plus"></i>
                    </a>
                </li>

                <li>
                   <a href="#/delete">
                      <i className="fa fa-trash"></i>
                    </a>
                </li>

                <li>
                   <a href="#/edit">
                      <i className="fa fa-edit"></i>
                    </a>
                </li>

                <li onClick={this.refresh}>
                   <a>
                      <i className="fa fa-refresh"></i>
                    </a>
                </li>

                <li>
                   <a href="#/branch">
                      <i className="fa fa-map-marker"></i>
                    </a>
                </li>

              </ul>
            </div>
          </div>
        </nav>

        <table className="table table-hover table-striped">

            <SuppliersList/>

      </table>
      </div>
    )},

  refresh: function(){
    location.reload();
  }
});

  module.exports = Suppliers;
奥利弗·瑞兹

问题是这段代码

var filteredSuppliers = this.state.data.filter(
  (item) => {
    return item.name.toLowerCase().indexOf(
      this.state.search.toLowerCase()) !== -1;
  }
)

this.state.search 是 undefined / null,因此你不能读取它的属性。

我建议只返回所有项目,以防搜索未定义/空,通常是任何假值,因此将该代码更改为:

var filteredSuppliers = this.state.search ? this.state.data.filter(
  (item) => {
    return item.name.toLowerCase().indexOf(
      this.state.search.toLowerCase()) !== -1;
  }
) : this.state.data

但是如果你得到错误

'undefined' is not a function (evaluating 'item.name.toLowerCase()')

那么你需要调用item.name.toString.toLowerCase()...,因为你只能在字符串上运行 toLowerCase 。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React JS:无法读取属性

无法读取 React js 中的属性

无法读取null的属性'props'-React.js

无法读取未定义的 React Js 的属性“协议”

React.js:无法读取未定义的属性“ myProp”

react js无法读取未定义的属性“ id”

无法读取空的特性“的setState” - React.js,莫代尔,引导

React.js-无法读取未定义的属性

无法读取未定义的属性“ bind”。React.js

无法读取未定义 React JS 的“handleClick”属性

React.js-TypeError:无法读取null的属性“值”

无法读取null反应错误react js的属性'refs'

React JS 无法读取未定义的属性“地图”

无法读取React JS中未定义的属性'map'

无法读取未定义的属性“ id”-REACT JS

React.JS无法读取null错误的属性“ props”

无法读取未定义 React js 的属性“show”

无法读取 null 的属性 - react.js 状态

无法读取未定义的React JS的属性'map'

无法从 React Native 上的 Tensorflow.js Tensorcamera 读取图像

React.js TypeError:无法读取 null 的属性“map”

React.js“无法读取未定义的属性‘地图’”

React js 错误:无法读取未定义的属性“0”

TypeError:无法在react js中读取null的属性“push”

React js TypeError:无法读取未定义的属性“params”

错误:无法读取未定义的 REACT JS 的属性“地图”

类型错误:无法读取 react.js 中未定义的属性(读取“addEventListener”)

无法使用 Firebase v9 Modular React JS 读取未定义的属性(读取“indexOf”)

无法在 React JS 中读取未定义的属性(读取“包含”)