首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在React中,searhbox不能正常工作

在React中,searhbox不能正常工作
EN

Stack Overflow用户
提问于 2021-10-18 16:55:57
回答 1查看 67关注 0票数 2

我是一个学习React的初学者。我试图跟进Udemy的一次演讲,但我的搜索框不能很好地工作,即使我重写了三次代码……你能检查一下为什么我的搜索框不能工作的代码吗?如果我在搜索框中输入一些单词,它应该显示匹配的卡片(在搜索框上写下姓名,它会显示匹配的卡片)

我将在下面分享我的代码

这是index.js

代码语言:javascript
运行
复制
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';

import reportWebVitals from './reportWebVitals';
import 'tachyons';


ReactDOM.render(<App />, document.getElementById('root'));

reportWebVitals();

这是App.js

代码语言:javascript
运行
复制
import React, { Component } from 'react';
import CardList from './CardList';
import SearchBox from './SearchBox';
import {robots} from './robots';
import './App.css'

class App extends Component {
    constructor() {
        super()
        this.state = {
            robots: robots,
            searchfield: ''
        }
    }
// With anything that comes from React, so constructor and render are pre-built in React
// any time you make your own methods on a componet, we have to use arror function
    onSearchCange = (event) => {
        this.setState({ searchfield: event.target.value })
        // console.log(event.target.value);
        // console.log(filteredRobots);
    }

    render() {
        const filteredRobots = this.state.robots.filter(robots =>{
            return robots.name.toLowerCase().includes(this.state.searchfield.toLowerCase());
        })
    return (
        <div className='tc'>
            <h1 className='f1'>RoboFriends</h1>
            <SearchBox searchCange={this.onSearchCange} />
            <CardList robots={filteredRobots}/>
        </div>
        );  
    }
}

export default App;

这是SearchBox.jss

代码语言:javascript
运行
复制
import React from 'react';

const SearchBox = ({ searchfield, searchChange}) => {
    return (
        <div className='pa2'>
            <input
                className='pa3 ba b--green bg-lightest-blue'
                type='search'
                placeholder='search robots'
                onChange={searchChange}
            />
        </div>
    );
} 

export default SearchBox;

这是CardList.js

代码语言:javascript
运行
复制
import React from 'react';
import Card from './Card';

const CardList = ({ robots }) => {
    const cardComponent = robots.map((user, i) => {
        return (<Card
         key={i}
         id={robots[i].id}
         name={robots[i].name}
         email={robots[i].email}
         />
        );
    })

    return(
        <div>
            {cardComponent}
        </div>      
    );
}

这是Card.js

代码语言:javascript
运行
复制
import React from 'react';

const Card = (props) => {
    const {name, email, id} = props;
    return (
        <div className='tc bg-light-green dib br3 pa3 ma2 grow bw2 shawdow-5'>
            <img alt='robots' src={`https://robohash.org/${id}?200*200`} />
            <div>
                <h2>{name}</h2>
                <p>{email}</p>
            </div>
        </div>
        );
}

export default Card;

这是robots.js

代码语言:javascript
运行
复制
export const robots = [
  {
    id: 1,
    name: 'Leanne Graham',
    username: 'Bret',
    email: 'Sincere@april.biz'
  },
  {
    id: 2,
    name: 'Ervin Howell',
    username: 'Antonette',
    email: 'Shanna@melissa.tv'
  },
  {
    id: 3,
    name: 'Clementine Bauch',
    username: 'Samantha',
    email: 'Nathan@yesenia.net'
  },
  {
    id: 4,
    name: 'Patricia Lebsack',
    username: 'Karianne',
    email: 'Julianne.OConner@kory.org'
  },
  {
    id: 5,
    name: 'Chelsey Dietrich',
    username: 'Kamren',
    email: 'Lucio_Hettinger@annie.ca'
  },
  {
    id: 6,
    name: 'Mrs. Dennis Schulist',
    username: 'Leopoldo_Corkery',
    email: 'Karley_Dach@jasper.info'
  },
  {
    id: 7,
    name: 'Kurtis Weissnat',
    username: 'Elwyn.Skiles',
    email: 'Telly.Hoeger@billy.biz'
  },
  {
    id: 8,
    name: 'Nicholas Runolfsdottir V',
    username: 'Maxime_Nienow',
    email: 'Sherwood@rosamond.me'
  },
  {
    id: 9,
    name: 'Glenna Reichert',
    username: 'Delphine',
    email: 'Chaim_McDermott@dana.io'
  },
  {
    id: 10,
    name: 'Clementina DuBuque',
    username: 'Moriah.Stanton',
    email: 'Rey.Padberg@karina.biz'
  }
];

谢谢你提前帮了我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-18 17:11:34

您在App.js的第31行有一个拼写错误

<SearchBox searchCange={this.onSearchCange} />

你的事件是'searchChange‘而不是'searchCange’,修复后的代码行应该是这样的:

<SearchBox searchChange={this.onSearchCange} />

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69619820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档