import React from 'react';
import { Button, Table, Modal, Form, FormControl } from 'react-bootstrap';
import axios from 'axios';
import CompanyEditModal from './CompanyEditModal';
const Company = props => (
<tr>
<td>{props.company.companyName}</td>
<td>{props.company.taxOffice}</td>
<td>{props.company.taxNumber}</td>
<td>{props.company.date}</td>
<td>
<Button
variant="danger"
onClick={() => props.onDelete(props.company._id)}
style={{ marginRight: '20px' }}
>
Sil
</Button>
<Button variant="primary" onClick={() => ...... TO BE DONE}>
Edit
</Button>
</td>
</tr>
);
class Companies extends React.Component {
state = {
companies: [],
companyName: '',
taxOffice: '',
taxNumber: '',
companyId: '',
show: false,
searchTerm: ''
};
onChange_1 = e => {
this.setState({
companyName: e.target.value
});
};
onChange_2 = e => {
this.setState({
taxOffice: e.target.value
});
};
onChange_3 = e => {
this.setState({
taxNumber: e.target.value
});
};
onSubmit = e => {
e.preventDefault();
const company = {
companyName: this.state.companyName,
taxOffice: this.state.taxOffice,
taxNumber: this.state.taxNumber
};
console.log(company);
axios.post('http://localhost:5000/companies/add', company).then(res => {
console.log(res.data);
window.location.reload();
});
this.setState({
companyName: ''
});
};
CompanyModal = () => {
const handleClose = () => this.setState({ show: false });
const handleShow = () => this.setState({ show: true });
return (
<>
<Button variant="success" type="submit" onClick={handleShow}>
+ Firma Ekle
</Button>
<Modal show={this.state.show} onHide={handleClose}>
<Modal.Header closeButton>
<Modal.Title>Firma Ekle</Modal.Title>
</Modal.Header>
<Modal.Body>
<Form onSubmit={this.onSubmit}>
<Form.Label>Firma Adı:</Form.Label>
<Form.Control
placeholder="* Firma Adını Giriniz"
onChange={this.onChange_1}
value={this.state.companyName}
/>
<Form.Text className="text-muted">* Girmek zorunludur.</Form.Text>
<br />
<Form.Label>Vergi Dairesi:</Form.Label>
<Form.Control
placeholder="Vergi Dairesini Giriniz"
onChange={this.onChange_2}
value={this.state.taxOffice}
/>
<br />
<Form.Label>Vergi Numarası:</Form.Label>
<Form.Control
placeholder="Vergi Numarasını Giriniz"
onChange={this.onChange_3}
value={this.state.taxNumber}
/>
<br />
<Button variant="primary" type="submit" onClick={handleClose}>
Kaydet
</Button>
<Button variant="danger" onClick={handleClose}>
Kapat
</Button>
</Form>
</Modal.Body>
</Modal>
</>
);
};
componentDidMount() {
axios
.get('http://localhost:5000/companies/')
.then(response => {
this.setState({ companies: response.data });
})
.catch(error => {
console.log(error);
});
}
onDelete = id => {
axios.delete('http://localhost:5000/companies/' + id).then(response => {
console.log(response.data);
});
this.setState({
companies: this.state.companies.filter(el => el._id !== id)
});
};
onEdit = id => {
axios.post('http://localhost:5000/companies/edit/' + id).then(response => {
console.log(response.data);
});
this.setState({
companies: to be done
});
};
companyList() {
if (!this.state.searchTerm) {
return this.state.companies.map(currentcompany => {
return (
<Company
company={currentcompany}
onDelete={this.onDelete}
key={currentcompany._id}
/>
);
});
} else {
return this.state.companies
.filter(company => {
return company.companyName
.toLowerCase()
.includes(this.state.searchTerm);
})
.map(matchingCompany => {
return (
<Company
company={matchingCompany}
onDelete={this.onDelete}
key={matchingCompany._id}
/>
);
});
}
}
onSearchCompanyName = e => {
this.setState({
searchTerm: e.target.value
});
};
render() {
return (
<div>
<br />
<h2>Firmalar</h2>
<hr />
<this.CompanyModal />
<hr />
<Form>
<FormControl
placeholder="Firma Ara"
onChange={this.onSearchCompanyName}
value={this.state.searchTerm}
></FormControl>
</Form>
<br />
<Table striped bordered hover>
<thead>
<tr>
<th>Firma Adı</th>
<th>Vergi Dairesi</th>
<th>Vergi Numarası</th>
<th>Eklenme Tarihi</th>
<th>Düzenle</th>
</tr>
</thead>
<tbody>{this.companyList()}</tbody>
</Table>
</div>
);
}
}
export default Companies;
节目视图:截图
const Company = props => (
<tr>
<td>{props.company.companyName}</td>
<td>{props.company.taxOffice}</td>
<td>{props.company.taxNumber}</td>
<td>{props.company.date}</td>
<td>
<Button variant="danger" onClick={()=>handleDelete(props)}>Delete</Button>
</td>
<td>
<Button variant="success" onClick={()=>handleEdit(props)}>Edit</Button>
</td>
</tr>
);
在将数据传递给Company
组件的位置定义HandleDelete
函数
handleDelete=(data)=>{
// make api request to delete object by(data.id)
}
handleEdit=(data)=>{
//make your model show to true
// then set your data fiels to state.
// then make your model show to false after updation
}
将HandleDelete
和HandleEdit
传递给Company
组件
companyList() {
return this.state.companies.map(currentcompany => {
return <Company handleDelete={this.handleDelete}
company={currentcompany} key={currentcompany._id}
handleEdit={this.handleEdit}/>;
});
}
我正在尝试将Google Maps添加到我的MERN Stack应用程序中。根据一些消息来源,我发现在create-react-app中添加.env文件并不能解决隐藏API_Keys(https://create-react-app.dev/docs/adding-custom-environment-variables/)的目的。如何将API_KEYS存储在后端(node.js)中并从React
我正试图找到一种方法来更新我的“用户”状态,但我在这里已经停留了3天,我需要一些帮助。 下面是我的用户上下文: 这里是我试图更新用户的地方。在我的例子中,我试图在user.cart数组中推送一个对象,因为后端的一切都很好,但在前端,状态不更新: > 首先使用UserContext: const Products=()=>{ 然后我试图更新用户状态,但当我单击该按钮时,它将我注销: 将我注销后,Us
我需要帮助在类别上发布多个数据,当我在选择输入上选择多个数据并提交时,它会抛出错误。请参阅下面的错误 下面是模型模式。模型 这是我的路线文件。路线 当我在输入选择上选择多个时,这是我提交时的错误。 但当我只选择一个时,它就会通过。我只能保存一个在五月类别字段,我想保存多个在我的类别字段。
下面是我MERN项目的文件结构。 客户端文件夹包含反应服务器。客户端在<code>localhost.Client上运行。comServer文件夹包含节点的代码。js服务器。服务器运行于 每当我从客户端向服务器发出请求时。如何缓解 csrf 攻击?确保向服务器发出的请求来自客户端,而不是来自任何其他源。
问题内容: 我有这个Python应用程序,它有时会卡住,我找不到位置。 有什么方法可以让Python解释器向您显示正在运行的确切代码吗? 某种动态堆栈跟踪? 问题答案: 我有用于以下情况的模块-进程将长时间运行,但有时由于未知且不可复制的原因而卡住。它有点hacky,并且只能在unix上运行(需要信号): 要使用它,只需在程序启动时在某个时候调用listen()函数(您甚至可以将其粘贴在site.
我正在尝试从数据库中提取数据。我从回应中得到的都是这样的: 我需要帮助如何在前端和后端提出请求: 以下是ReactJS方面: 以下是请求的服务器端: 以下是ProductService: 附注:产品在MongoDB Compass中创建时没有错误: