- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 asp.net MVC 开发了一个基本的 API,它用作基本的用户 CRUD。 (创建、读取、更新和删除)
我已经开始使用 ReactJS 创建一个前端,它具有添加用户模式表单、编辑用户模式和删除功能。
GET、POST 和 DELETE 功能都可以工作,唯一的问题来自 PUT。当我单击“编辑用户”模式时,仅显示 ID。
editUserModal.js的代码如下:
const BASE_API_URL = `http://localhost:56062/api/users`;
export class EditUserModal extends Component{
constructor(props){
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
}
componentDidMount(){
fetch(BASE_API_URL)
.then(response => response.json())
.then(data => {
this.setState({deps:data});
});
}
handleSubmit(event){
event.preventDefault();
fetch(BASE_API_URL,{
method:'PUT',
headers:{
'Accept':'application/json',
'Content-Type':'application/json'
},
body:JSON.stringify({
Id:event.target.Id.value,
firstName:event.target.firstName.value,
lastName:event.target.lastName.value,
Email:event.target.Email.value,
mobileNumber:event.target.mobileNumber.value,
dateOfBirth:event.target.dateOfBirth.value,
lastModified:event.target.lastModified.value
})
})
.then(res=> res.json())
.then((result) =>
{
console.log(result);
},
(error) => {
console.log('Failed')
}
)
}
render(){
return(
<Modal
{...this.props}
size="lg"
aria-labelledby="contained-modal-title-vcenter"
centered
>
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-vcenter">
Edit User
</Modal.Title>
</Modal.Header>
<Modal.Body>
<div className="editFormContainer">
<Row>
<Col sm={12}>
<Form onSubmit={this.handleSubmit}>
<Form.Group controlId="Id">
<Form.Label>User ID</Form.Label>
<Form.Control name="Id" disabled defaultValue = {this.props.userid} type="text" placeholder="Id" />
</Form.Group>
<Form.Group controlId="firstName">
<Form.Label>First Name</Form.Label>
<Form.Control name="firstName" required type="text" defaultValue = {this.props.firstname} placeholder={this.props.firstname} />
</Form.Group>
<Form.Group controlId="lastName">
<Form.Label>Last Name</Form.Label>
<Form.Control name="lastName" required type="text" defaultValue = {this.props.lastname} placeholder="Last Name" />
</Form.Group>
<Form.Group controlId="Email">
<Form.Label>Email address</Form.Label>
<Form.Control name="Email" required type="email" defaultValue = {this.props.useremail} placeholder="Email e.g. name@example.com" />
</Form.Group>
<Form.Group controlId="mobileNumber">
<Form.Label>Mobile Number</Form.Label>
<Form.Control name="mobileNumber" required type="text" defaultValue = {this.props.mobilenumber} placeholder="Mobile e.g. 0723218223 or +447236475886" />
</Form.Group>
<Form.Group controlId="dateOfBirth">
<Form.Label>Date of Birth</Form.Label>
<Form.Control name="dateOfBirth" required type="date" defaultValue = {this.props.dateofbirth} placeholder="Date of Birth e.g. 05-02-97" />
</Form.Group>
<Form.Group>
<Button variant="primary" type="submit">Edit User</Button>
</Form.Group>
</Form>
</Col>
</Row>
</div>
</Modal.Body>
<Modal.Footer>
<Button variant="danger" onClick={this.props.onHide}>Close</Button>
</Modal.Footer>
</Modal>
)
}
}
包含表(User.js)的代码如下:
export class User extends Component {
constructor(props){
super(props);
this.state = {users:[], addModalShow : false, editModalShow: false}
}
componentDidMount(){
this.refreshList();
}
refreshList(){
fetch(BASE_API_URL)
.then(response=> response.json())
.then(data => {
this.setState({users:data})
})
}
componentDidUpdate(){
this.refreshList();
}
deleteUser(userid)
{
if(window.confirm('Are you sure?'))
{
fetch(`http://localhost:56062/api/users/`+userid,{
method:'DELETE',
header:{'Accept':'application/json',
'Content-Type':'application/json'
}
})
}
}
render(){
const {users, userid, firstname, lastname, useremail, mobilenumber, dateofbirth, lastmodified} = this.state;
let addModalClose =() => this.setState({addModalShow:false});
let editModalClose =() => this.setState({editModalShow:false});
return(
<div>
<ButtonToolbar>
<Button variant='outline-dark' onClick={()=> this.setState({addModalShow:true})}>
Add User
</Button>
<AddUserModal show={this.state.addModalShow} onHide={addModalClose} />
</ButtonToolbar>
<Table responsive striped hover size="sm" variant="dark" className="mt-4">
<thead>
<tr>
<th>Id</th>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
<th>Mobile Number</th>
<th>Date of Birth</th>
<th>Last Modified</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
{users.map(user=>
<tr key = {user.Id}>
<td>{user.Id}</td>
<td>{user.firstName}</td>
<td>{user.lastName}</td>
<td>{user.Email}</td>
<td>{user.mobileNumber}</td>
<td>{user.dateOfBirth}</td>
<td>{user.lastModified}</td>
<td>
<ButtonToolbar>
<Button className="mr-2" variant="outline-light" onClick={()=> this.setState({editModalShow:true, userid:user.Id, mobilenumber:user.mobileNumber, dateofbirth:user.dateOfBirth, lastmodified:user.lastModified})}>
Edit User
</Button>
<EditUserModal
show = {this.state.editModalShow}
onHide = {editModalClose}
userid = {userid}
firstname = {user.firstName}
lastname = {user.lastName}
useremail = {user.Email}
mobilenumber = {user.mobileNumber}
dateofbirth = {user.dateOfBirth}
lastmodified = {user.lastModified} />
</ButtonToolbar>
</td>
<td>
<Button variant="outline-danger" onClick={()=> this.deleteUser(user.Id)} >Delete</Button>
</td>
</tr>
)}
</tbody>
</Table>
</div>
)
}
}
所以我认为问题出在 User.js 中的这部分代码
我正在查看的指南的代码似乎在这样编写时加载了所有适当的字段,
<EditUserModal
show = {this.state.editModalShow}
onHide = {editModalClose}
userid = {userid}
firstname = {firstname}
lastname = {lastname}
useremail = {useremail}
mobilenumber = {mobilenumber }
dateofbirth = {dateofbirth }
lastmodified = {lastmodified } />
当代码像这样编写时,由于某种原因,只有 Id 和手机号码会加载到“编辑用户”模式中。
而当我有这样的代码时,它会显示该列的正确 ID,然后显示最后插入的列的所有信息,如下所示。
<EditUserModal
show = {this.state.editModalShow}
onHide = {editModalClose}
userid = {userid}
firstname = {user.firstName}
lastname = {user.lastName}
useremail = {user.Email}
mobilenumber = {user.mobileNumber}
dateofbirth = {user.dateOfBirth}
lastmodified = {user.lastModified} />
上图应显示用户 13,但显示的是最后一次输入(即用户 17)的其余信息。
发生这种情况有什么具体原因吗?也许我以一种不好的方式设置状态?
========================更新====================== ===========
我现在已经在组件内设置了一个关键 Prop ,但同样的事情发生了,当加载编辑模式时,只有 ID 和手机号码出现在文本框中。
<EditUserModal
show = {this.state.editModalShow}
key = {userid}
onHide = {editModalClose}
userid = {userid}
firstname = {firstname}
lastname = {lastname}
useremail = {useremail}
mobilenumber = {mobilenumber}
dateofbirth = {dateofbirth}
lastmodified = {lastmodified} />
最佳答案
在 EditUserModal
组件上设置一个名为 key 的属性,并将其设置为 userId
值。
您可以阅读有关此的更多信息 here
关于javascript - 编辑方法未检索适当的信息 [错误] React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59888078/
问题是,当用户回复彼此的帖子时,我必须这样做: margin-left:40px; 对于 1 级深度 react margin-left:80px; 对于 2 层深等 但是我想让 react div
我试图弄清楚如何将 React Router 与 React VR 连接起来。 首先,我应该使用 react-router dom/native ?目前尚不清楚,因为 React VR 构建在 Rea
我是 React 或一般编码背景的新手。我不确定这些陈述之间有什么区别 import * as react from 'react' 和 import react from 'react' 提前致谢!
我正在使用最新的稳定版本的 react、react-native、react-test-renderer、react-dom。 然而,react-native 依赖于 react@16.0.0-alp
是否 react 原生 应用程序开发可以通过软件架构实现,例如 MVC、MVP、MVVM ? 谢谢你。 最佳答案 是的。 React Native 只是你提到的那些软件设计模式中的“V”。如果你考虑其
您好我正在尝试在我的导航器右按钮中绑定(bind)一个功能, 但它给出了错误。 这是我的代码: import React, { Component } from 'react'; import Ico
我使用react native创建了一个应用程序,我正在尝试生成apk。在http://facebook.github.io/react-native/docs/signed-apk-android.
1 [我尝试将分页的 z-index 更改为 0,但没有成功] 这是我的codesandbox的链接:请检查最后一个选择下拉列表,它位于分页后面。 https://codesandbox.io/s/j
我注意到 React 可以这样导入: import * as React from 'react'; ...或者像这样: import React from 'react'; 第一个导入 react
我是 react-native 的新手。我正在使用 React Native Paper 为所有屏幕提供主题。我也在使用 react 导航堆栈导航器和抽屉导航器。首先,对于导航,论文主题在导航组件中不
我有一个使用 Ignite CLI 创建的 React Native 应用程序.我正在尝试将 TabNavigator 与 React Navigation 结合使用,但我似乎无法弄清楚如何将数据从一
我正在尝试在我的 React 应用程序中进行快照测试。我已经在使用 react-testing-library 进行一般的单元测试。然而,对于快照测试,我在网上看到了不同的方法,要么使用 react-
我正在使用 react-native 构建跨平台 native 应用程序,并使用 react-navigation 在屏幕之间导航和使用 redux 管理导航状态。当我嵌套导航器时会出现问题。 例如,
由于分页和 React Native Navigation,我面临着一种复杂的问题。 单击具有类别列表的抽屉,它们都将转到屏幕 问题陈述: 当我随机点击类别时,一切正常。但是,在分页过程中遇到问题。假
这是我的抽屉导航: const DashboardStack = StackNavigator({ Dashboard: { screen: Dashboard
尝试构建 react-native android 应用程序但出现以下错误 info Running jetifier to migrate libraries to AndroidX. You ca
我目前正在一个应用程序中实现 React Router v.4,我也在其中使用 Webpack 进行捆绑。在我的 webpack 配置中,我将 React、ReactDOM 和 React-route
我正在使用 React.children 渲染一些带有 react router 的子路由(对于某个主路由下的所有子路由。 这对我来说一直很好,但是我之前正在解构传递给 children 的 Prop
当我运行 React 应用程序时,它显示 export 'React'(导入为 'React')在 'react' 中找不到。所有页面错误 see image here . 最佳答案 根据图像中的错误
当我使用这个例子在我的应用程序上实现 Image-slider 时,我遇到了这个错误。 import React,{Component} from 'react' import {View,T
我是一名优秀的程序员,十分优秀!