cuốn sách gpt4 ai đã làm

javascript - 如何使用ReactJS渲染过滤元素之前的元素?

In lại Tác giả: Walker 123 更新时间:2023-11-28 17:31:58 25 4
mua khóa gpt4 Nike

我正在做一个项目,它对 json-server 进行 get 操作,并将它们呈现在屏幕上。

但是当我在其上添加过滤功能时,它仅在我输入要过滤的名称后才会呈现。我希望他渲染每个人并制作滤镜。

My Body.js(我的渲染函数在哪里):

import React from 'react';
import './Body.css';
import { Link } from "react-router-dom";

class Body extends React.Component {
constructor(props) {
super(props);
this.state = {
input: "",
employeeBody: this.props.employee,
}
}


getName = () => {
const { employee, add } = this.props;
const {employeeBody} = this.state;
return employee.map(name => (


add(name)} key={name.id}>

src={`https://picsum.photos/${name.id}`}
/>

{name.name}




));
};


---
getValueInput = (evt) => {
const inputValue = evt.target.value;
this.setState({ input: inputValue });
this.filterNames(inputValue);
console.log(this.state.employeeBody)
}

filterNames (inputValue) {
const { employee } = this.props;
this.setState({
employeeBody: employee.filter(item =>
item.name.includes(inputValue))
});
}
---

kết xuất() {
trở lại (


{this.getName()}





)
}
}

export default Body;

我的App.js(我通过axios的get获取状态的地方。):

import React from 'react';
import {
BrowserRouter as Router,
Route
} from "react-router-dom";
nhập './App.css';
import axios from 'axios';
import Body from './Body';
import User from './User';
import Header from './Header';


class AppRouter extends React.Component {
state = {
employeeCurrent: [],
employee: []
};

componentDidMount() {
axios
.get("http://127.0.0.1:3004/employee")
.then(response => this.setState({
employee: response.data
}));
}

add = name => {
this.setState(prevState => {
const copy = prevState.employeeCurrent.slice(1);
copy.push(name);
trở lại {
employeeCurrent: copy
};
});
};

kết xuất() {
return ( <
Router >
<
div className = "router" >
<
Header / >
<
Route exact path = "/"
render = {
props => ( <
Body { ...props
}
add = {
this.add
}
employee = {
this.state.employee
}
employeeCurrent = {
this.state.employeeCurrent
}
/>
)
}
/> <
Route path = "/user/:id"
component = {
props => ( <
User { ...props
}
employee = {
this.state.employee
}
employeeCurrent = {
this.state.employeeCurrent
}
/>
)
}
/> <
/div> <
/Router>
);
}
}
export default AppRouter;

有人可以帮助我吗?

câu trả lời hay nhất

您应该在渲染方法中进行过滤。

kết xuất() {
const { employee: employees } = this.props; // rename the variable {employee} to plural {employees}, it has more sense.
const { input } = this.state;
trở lại (


{employees
.filter(employee => employee.name.includes(input))
.map(employee => {


add(employee)} key={employee.id}>

src={`https://picsum.photos/${employee.id}`}
/>

{employee.name}




})}


this.setState({ input: e.target.value })} />


);
}

请记住,方法 includes 区分大小写,在比较之前应将其小写。

P.S.:您还可以创建一个变量/组件/函数并渲染分割那里渲染的所有“逻辑”。

关于javascript - 如何使用ReactJS渲染过滤元素之前的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50142525/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress