繁体   English   中英

如何在组件内的 react.js 中创建搜索

[英]How to create search in react.js inside a Component

我有我的 react redux 项目,我想向 menuItems 组件添加搜索。 但我似乎无法弄清楚如何搜索现有地图。 我使用 onChange 事件创建了一个输入,该事件将状态设置为输入项。 但我不知道在那之后该怎么办。

class MenuItems extends Component {

    state = {
        searchTerm: '',
   
    }

    handleclick = (item) => {
        this.props.deleteMenuItem(item.id);
    }

    handleSearch = (event) => {
        this.setState({
            [event.target.name]: event.target.value
        })
    }

    filteredItem = () => {
       let filtered = [...this.props.menuItems].filter(item => item.name === "burger")
     
    }


    render(){

        let showItems = this.props.menuItems;

        return ( 
            <div>   

                <input 
                    placeholder="search"
                    name="searchTerm"
                    type="text"
                    value={this.state.searchTerm}
                    onChange={this.handleSearch}
                />

                {showItems.map((item) =>(
                    <li class="list" key={item.id}>
                        {item.name}
                        <br></br>
                        {item.body}
                        <br></br>
                        <img src={item.image}></img>
                        <br></br>
                        <button id={item.id} onClick={() => this.handleclick(item)}>delete </button>
                    </li>
                ))}

            </div>
        )
    }
}

export default connect(null, {deleteMenuItem})(MenuItems)

看起来您只需要使用 searchTerm 进行过滤就可以了。

class MenuItems extends Component {
  state = {
    searchTerm: "",
  };

  handleclick = (item) => {
    this.props.deleteMenuItem(item.id);
  };

  handleSearch = (event) => {
    this.setState({
      [event.target.name]: event.target.value,
    });
  };

  render() {
    let showItems = this.props.menuItems;
    const filtered =
      [...this.props.menuItems].filter((item) =>
        item.name.includes(this.state.searchTerm)
      ) ?? [];

    return (
      <div>
        <input
          placeholder="search"
          name="searchTerm"
          type="text"
          value={this.state.searchTerm}
          onChange={this.handleSearch}
        />

        {showItems.map((item) => (
          <li className="list" key={item.id}>
            {item.name}
            <br></br>
            <button id={item.id} onClick={() => this.handleclick(item)}>
              delete
            </button>
          </li>
        ))}
        {filtered.map((item) => (
          <li className="list" key={item.id}>
            Filtered: {item.name}
            <br></br>
          </li>
        ))}
      </div>
    );
  }
}

const App = () => {
  return (
    <div>
      <MenuItems menuItems={[{ name: "name1" }, { name: "name2" }]} />
    </div>
  );
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM