【发布时间】:2021-03-20 07:47:15
【问题描述】:
我有一个用于在表格中搜索名称的反应组件。 一切正常,除了我必须先搜索才能看到数据。如果我在没有搜索的情况下登陆页面,我将没有信息。
如何先显示数据,然后在其中搜索?我将 React 和 Laravel 用于 API。
我的 JS 代码:
import React, { Component } from "react";
import Widget1 from "../components/Widget1";
import Header from "../components/Header";
import axios from "axios";
import { Link } from "react-router-dom";
import Echo from "laravel-echo";
import { Container, Dropdown, ListGroup, Button } from "react-bootstrap";
import ReactDOM from "react-dom";
import { Table, Thead, Tbody, Tr, Th, Td } from "react-super-responsive-table";
import "react-super-responsive-table/dist/SuperResponsiveTableStyle.css";
import { useState } from "react";
function SearchPatient() {
const [data, setData] = useState([]);
async function search(key) {
console.warn(key);
let result = await fetch("http://localhost:8000/api/search/" + key);
result = await result.json();
console.warn(result);
setData(result);
}
return (
<div>
<Container>
<div className="form-group">
<label htmlFor="exampleInputEmail1">Search</label>
<input
type="text"
className="form-control"
placeholder="Search"
id="nom"
onChange={(e) => search(e.target.value)}
/>
</div>
<Table className="table table-hover">
<Thead className="thead-light text-center">
<Tr>
<Th>N°</Th>
<Th style={{ width: "6%" }}>NOM</Th>
<Th>PRÉNOM</Th>
</Tr>
</Thead>
<Tbody className="text-center">
{data.map((patient) => (
<Tr>
<Td style={{ verticalAlign: "middle" }} className="text-muted">
<b>{patient.id}</b>
</Td>
<Td style={{ verticalAlign: "middle" }}>{patient.nom} </Td>
<Td style={{ verticalAlign: "middle" }}>{patient.prenom} </Td>
</Tr>
))}
</Tbody>
</Table>
</Container>
</div>
);
}
export default SearchPatient;
if (document.getElementById("SearchPatient")) {
ReactDOM.render(<SearchPatient />, document.getElementById("SearchPatient"));
}
API:
Route::get('/search/{key}/', [PatientController::class, 'search']);
Laravel 控制器:
public function search($key)
{
return Patient::where('nom','Like',"%$key%")->get();
}
【问题讨论】:
标签: javascript reactjs laravel