反应如何达到JSON文件中的对象

我正在编写一些项目,并且我有一个带有对象的json文件。在我的JSON文件中有用户列表。我没有将该列表导入带有表格的组件。现在我有很好的用户列表和他们的细节表。接下来我要做的是在每一行中创建“详细信息”按钮,并使用onClick按钮加载所有关于其他组件中用户的信息,这些信息将在表格旁边呈现。基本上我想做的是右侧的用户列表和左侧的特定用户的详细信息。表格不会改变,只更改左侧组件和用户信息。最大的问题是,我知道如何从http://localhost:3000/users.json加载json文件到表,但我不知道如何通过他们的id到达某些对象。例如http://localhost:3000/users/1反应如何达到JSON文件中的对象

我的容器装载JSON:

import React, { Component } from 'react'; 

import axios from 'axios';

import UserListComponent from './UserListComponent';

class UserListContainer extends Component {

constructor(props){

super(props);

this.state = {

users: []

};

}

componentWillMount(){

var self = this;

axios.get('http://localhost:3000/users.json')

.then((response) => {

self.setState({ users: response.data });

})

}

render(){

return(

<UserListComponent users={this.state.users} />

);

}

}

export default UserListContainer;

这是用户表成分:

import React, { Component } from 'react'; 

import PropTypes from 'prop-types';

import { Link } from 'react-router-dom';

class UserCardComponent extends Component {

render(){

return(

<tr className='clickable-row' data-href='url://'>

<td>{this.props.id}</td>

<td>{this.props.name}</td>

<td>{this.props.surname}</td>

<td>{this.props.city}</td>

<td>{this.props.email}</td>

<td>{this.props.phone}</td>

<Link to={'/user/'+this.props.id} className="btn btn-primary">Details</Link>

</tr>

);

}

}

UserCardComponent.propTypes = {

id: PropTypes.number.isRequired,

name: PropTypes.string.isRequired,

surname: PropTypes.string.isRequired,

city: PropTypes.string.isRequired,

email: PropTypes.string.isRequired,

phone: PropTypes.string.isRequired

};

export default UserCardComponent;

,并有我的index.js:

import '../node_modules/bootstrap/dist/css/bootstrap.css'; 

import React from 'react';

import ReactDOM from 'react-dom';

import './index.css';

import App from './App';

import UserDetails from './UserDetails';

import ContentComponent from './ContentComponent';

import registerServiceWorker from './registerServiceWorker';

import {

BrowserRouter as Router,

Route,

Link

} from 'react-router-dom';

import jQuery from 'jquery'

global.jQuery = jQuery

global.jquery = jQuery // jquery lowercase was the solution

global.$ = jQuery

let Bootstrap = require('bootstrap')

ReactDOM.render(

<Router>

<App>

<Route exact path="/" component={ContentComponent} />

<Route path="contact/:id" component={UserDetails} />

</App>

</Router>, document.getElementById('root'));

registerServiceWorker();

我的用户.json文件:

[{ 

"id": 1,

"name": "Pempe",

"surname": "Pampino",

"city": "Torino",

"email": "[email protected]",

"phone": "+568888",

"active": true

}, {

"id": 2,

"name": "John",

"surname": "Johnson",

"city": "Moscow",

"email": "[email protected]",

"phone": "+216545646",

"active": true

}, {

"id": 3,

"name": "Anton",

"surname": "Antonov",

"city": "Los Angeles",

"email": "[email protected]",

"phone": "+5654448",

"active": true

}]

P.S.对不起我的英语不好。

回答:

您可以使用filter方法来仅过滤指定id的值。

function getUserById(id) { return this.state.users.filter(x => (x.id === id))[0] }

请注意,此代码假定使用指定的ID的用户存在。

此代码可用于React组件,或者您可以在服务器上创建特定端点。

回答:

在UserDetails组件中(我不确定它是如何看起来像你的情况),你将有用户的id,所以你基本上需要做类似于你在UserListContainer componentWillMount方法中做的事情,那就是:加载用户,然后过滤出具有用户标识的列表。

以上是 反应如何达到JSON文件中的对象 的全部内容, 来源链接: utcz.com/qa/265549.html

回到顶部