React 搜索框输入搜索条件后同步更新state的问题
主页面<Main />:
主页面把state中的cards传给子组件<Card />.
需求:好比初始化时从数据库一共返回10条数据(10个card),我输入搜索条件后只有8个符合的,那么只需要显示这8个。
问题在于:输入条件后,49行log出来为8个,但是接下来我setState后再在57行log,出来的还是10个。 我查了下,因为setState 不是同步的,但是可以在setState 提供的回调函数中得到最新的状态(53行log出来确实也是只有8个)。
请问:这个setState里的最新state怎么传到render()中的<Card cards={this.state.cards}/>中去?从而实现只显示8个card的结果?谢谢
import React from 'react';
import Axios from 'axios';
import Card from './Card';
import '../css/main.css'
import 'font-awesome/css/font-awesome.min.css';
class Main extends React.Component{
state = {
cards:[],
keyword:'',
}
componentDidMount(){
this.retreiveData();
}
retreiveData = () =>{
Axios.get(`${process.env.REACT_APP_API_URL}/cards`)
.then(response => {
this.state = {cards: response.data};
this.setState(this.state)
})
.catch(function(error){
console.log(error.response)
})
}
handleSearchChange =(e) =>{
console.log(this.state.keyword)
this.setState({keyword: e.target.value })
}
handleSearchSubmit = (e) => {
e.preventDefault();
this.retreiveData();
let newData =[];
var data = this.state.cards
data.map((item)=>{
if(item.companyName.indexOf(this.state.keyword) >= 0){
newData.push(item)
}
});
console.log(newData)
this.setState({cards:newData},()=>{
console.log(this.state.cards)
})
console.log(this.state.cards)
}
render(){
return (
<>
<section className="jumbotron text-center">
<div className="container">
<form className="form-group" onSubmit={this.handleSearchSubmit}>
<input type="text" className="form-control" placeholder="Search this site"
onChange={this.handleSearchChange}
/>
<button className="btn btn-secondary" type="submit">
<i className="fa fa-search"></i>
</button>
</form>
</div>
</section>
<Card cards={this.state.cards}/>
</>
);
}
}
export default Main;主页面把state中的cards传给子组件<Card />.
需求:好比初始化时从数据库一共返回10条数据(10个card),我输入搜索条件后只有8个符合的,那么只需要显示这8个。
问题在于:输入条件后,49行log出来为8个,但是接下来我setState后再在57行log,出来的还是10个。 我查了下,因为setState 不是同步的,但是可以在setState 提供的回调函数中得到最新的状态(53行log出来确实也是只有8个)。
请问:这个setState里的最新state怎么传到render()中的<Card cards={this.state.cards}/>中去?从而实现只显示8个card的结果?谢谢
...全文
相关推荐
react-react实现的搜索框
react实现的搜索框
React搜索框实现指南与实战
useState是React中的一个基础钩子(hook),允许函数组件拥有自己的状态。它解决了在不使用类组件的情况下,函数组件无法拥有状态的问题。useState钩子的使用语法如下:state是当前状态的值。setState是一个函数,用于更新状态。这个函数可以接受一个新的状态值,也可以接受一个函数,该函数将当前状态作为参数并返回新的状态。下面展示一个使用useState的完整组件例子:// 使用useState钩子定义状态和更新函数// 事件处理函数,用于更新状态。
用React.js构建前端的搜索框组件
我们的目的是使用 React.js 构建一个功能完整的前端搜索框组件。这个组件不仅要有基本的输入框让用户输入搜索内容,还要有搜索按钮,并且能把用户输入的内容传递出去进行搜索操作。范围涵盖了从组件的设计、代码实现到最终在项目中使用的整个过程。接下来的内容会按照以下结构展开:首先介绍 React.js 和搜索框组件的核心概念,让大家对它们有一个初步的认识;然后详细讲解构建搜索框组件的算法原理和具体操作步骤,包括代码的编写和解读;接着通过项目实战,展示如何在实际项目中使用这个搜索框组件;
React.js搜索框文字筛选实例
React.js搜索框文字筛选实例是一款默认设置文字列表数据,输入框输入相应关键词检索筛选效果。
搜索功能-React:React-搜索功能
ReactJS-搜索功能


