亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我收到錯誤消息“TypeError:searchField.toLowerCase 不是函數”

我收到錯誤消息“TypeError:searchField.toLowerCase 不是函數”

子衿沉夜 2022-12-22 16:01:02
** 嘗試運行此代碼時出現錯誤“TypeError:searchField.toLowerCase 不是函數”,而代碼正在編譯成功**import React, { Component } from 'react';import CardList from '../Components/CardList';import SearchBox from '../Components/SearchBox';//import { robots } from './robot';import './App.css';import Scroll from '../Components/Scroll';import ErrorBoundry from '../Components/ErrorBoundry';import { connect } from 'react-redux';import { searchChange } from '../actions'         const mapStateToProps = state => {    return {searchField:state.searchField} }  const mapDispatchToProps = (dispatch) =>{    return {        searchField:(event) => dispatch(searchChange(event.target.value))    } }  class App extends Component {    constructor(){        super()        this.state = {            robots:[]        }       }          componentDidMount() {        fetch('https://jsonplaceholder.typicode.com/users').then(respond =>{            return respond.json()        }).then(users =>{             this.setState({robots:users})        })    }        render(){        const { searchField, onSearchChange } = this.props;        const filterRobots = this.state.robots.filter(robots =>{            //trying to search robot with either upper case or lower case            return robots.name.toLowerCase().includes(searchField.toLowerCase())        });         return(            <div className="tc">            <h1 className="head"> Robo Friend App</h1>            <div>            <SearchBox searchChange={onSearchChange}/>            </div>             <Scroll>            <ErrorBoundry>            <CardList robots={filterRobots} />            </ErrorBoundry>            </Scroll>            </div>            )    }     }  export default connect(mapStateToProps, mapDispatchToProps)(App);
查看完整描述

3 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

看來您的 mapDispatchToProps函數正在searchField覆蓋mapStateToProps. 所以searchFieldprop 實際上是一個函數而不是一個字符串。



查看完整回答
反對 回復 2022-12-22
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

將您的mapDispatchToProps代碼塊從


const mapDispatchToProps = (dispatch) =>{

  return {

      searchField:(event) => dispatch(searchChange(event.target.value))

  }

}

進入


const mapDispatchToProps = (dispatch) =>{

  return {

      onSearchChange:(event) => dispatch(searchChange(event.target.value))

  }

}

您的實現中的問題是您對 mapStateToProps 和 mapDispatchToProps 使用相同的(prop)名稱,在這種情況下,稍后會覆蓋第一個。


查看完整回答
反對 回復 2022-12-22
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

您的filterRobots函數嘗試在searchField仍未定義時運行


在像這樣運行過濾器之前嘗試檢查searchField值


const filterRobots = this.state.robots.filter(robots =>{

      

       //*** add the next line

      if(!searchField) return undefined

       //trying to search robot with either upper case or lower case

      return robots.name.toLowerCase().includes(searchField.toLowerCase())

  });

這確保了這條線


return robots.name.toLowerCase().includes(searchField.toLowerCase())

僅在searchField有值時運行


查看完整回答
反對 回復 2022-12-22
  • 3 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號