Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Native中的筛选器数组_Javascript_Arrays_Reactjs_React Native_Filter - Fatal编程技术网

Javascript React Native中的筛选器数组

Javascript React Native中的筛选器数组,javascript,arrays,reactjs,react-native,filter,Javascript,Arrays,Reactjs,React Native,Filter,我尝试过滤数组。当用户在React Native的搜索输入中键入内容时,我需要实时筛选,但我像通常在React中筛选一样进行筛选。出了点问题。 你能看一下并告诉我哪里出错了吗?现在我有一个错误:undefined不是一个对象this.state.inputValue.trim我想也许我应该用另一种方式做一个过滤器 import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { View,

我尝试过滤数组。当用户在React Native的搜索输入中键入内容时,我需要实时筛选,但我像通常在React中筛选一样进行筛选。出了点问题。 你能看一下并告诉我哪里出错了吗?现在我有一个错误:undefined不是一个对象this.state.inputValue.trim我想也许我应该用另一种方式做一个过滤器

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { View, Image, TouchableOpacity, TextInput } from 'react-native';
import { TopName, BottomName, TitleLedger } from '../common/text';
import styles from './style';

const rows = [{
  "img": require('../../assets/avatar.png'),
  "name": "Johnny",
  "nick": "@johny",
},{
  "img": require('../../assets/avatar.png'),
  "name": "Johnny",
  "nick": "@johny",
},{
  "img": require('../../assets/avatar.png'),
  "name": "Alex",
  "nick": "@alex",
},{
  "img": require('../../assets/avatar.png'),
  "name": "Johnny",
  "nick": "@johny",
}];

export default class Payment extends Component {
    state={
        inputValue: ''
    }
    onChangeHandler = (e)=> {
         this.setState({inputValue: e.target.value})
         console.log(e.target.value, 'value')
     }
  render() {
    const inputValueLet = this.state.inputValue.trim().toLowerCase();
    let rowsNew = [];
    if(rows.length>0){
            rowsNew = rows.filter(row => {
                return row.name.toLowerCase().match( inputValueLet )
            });
        }
    const { navigator } = this.props;
    const dataRow = rowsNew.map((row, index) => {
            return (
              <View style={styles.content}>
              <Image source={row.img} style={styles.avatar}/>
              <View key={index} id={index} style={styles.operation}>
                <View style={styles.wrapper}>
                  <View style={styles.topName}>
                    <TopName label={row.name} />
                  </View>
                  <View style={styles.bottomName}>
                    <BottomName label={row.nick} />
                  </View>
                </View>
              </View>
              </View>
            )
          })
    return (
        <View>
          <View>
            <TextInput
              style={styles.searchBar}
              type="text"
              value={this.state.inputValue}
              onChange={this.onChangeHandler}
              placeholder='Search'
              />
          </View>
        <View style={styles.container}>
            {dataRow}
        </View>
      </View>
    );
  }
}
您状态中的inputValue声明为字符串

要解决错误,未定义的对象不是this.state.inputValue.trim

我认为您应该将inputValue声明为对象:

state = {
     inputValue: {}
}
react native TextInputonChange中没有event.target.value。使用event.nativeEvent.text或从何处获取文本作为回调参数

<TextInput
          style={styles.searchBar}
          type="text"
          value={this.state.inputValue}
          onChangeText={inputValue => this.setState({ inputValue })}
          placeholder='Search'
          />

已经有了一个正确的答案,但除此之外,我还指出您可以编写:const rowsNew=rows.filterrow=>row.name.toLowerCase.matchinputValueLet;直接而不是现有的代码。
<TextInput
          style={styles.searchBar}
          type="text"
          value={this.state.inputValue}
          onChangeText={inputValue => this.setState({ inputValue })}
          placeholder='Search'
          />