【发布时间】:2017-07-07 13:24:04
【问题描述】:
我正在尝试将数据向下传递到带有反应路由器的组件。我已经测试过端点可以正常工作,所以这不是服务器问题。
这是我的函数,它应该根据 ID 参数获取页面数据:
instance.get(`/admin/page/${id}`).then((response) => {
return response.data
}).catch((error) => {
console.log(error)
})
}
还有我的 React 路线:
<Route path="/admin/edit-page/:id" render={ (props) => (
<AddEditPage {...props} page={this.setPage(props.match.params.id)} />
)} />
但是当我转到时页面返回未定义
localhost:3000/admin/edit-page/1
如果我在setPage 函数中console.log(response.data),我可以在控制台中看到正确的数据。这太奇怪了。
难道我不应该return response.data ??
这是整个App.js 容器文件:
import React, { Component } from 'react';
import {
BrowserRouter as Router,
Route
} from 'react-router-dom'
import axios from 'axios'
import Header from '../components/Header'
import Dashboard from './Dashboard'
import AddEditPage from './AddEditPage'
const instance = axios.create({baseURL: 'http://localhost:1337'})
class App extends Component {
constructor(props) {
super(props);
this.state = {
"pages": []
}
this.createPage = this.createPage.bind(this)
this.getPages = this.getPages.bind(this)
this.setPage = this.setPage.bind(this)
}
componentDidMount() {
this.getPages()
}
getPages() {
instance.get('/admin/listPages')
.then(
(response) => {
this.setState(
{
"pages": response.data
}
)
})
.catch((error) => {console.log(error)})
}
createPage(page) {
instance.post('/admin/createPage',page).then((response) => {
this.getPages();
//TODO: Create my own history object as props, then use router to push route.
window.location.replace('/')
}).catch((error) => {
console.log(error)
})
}
setPage(id) {
instance.get(`/admin/page/${id}`).then((response) => {
return response.data
}).catch((error) => {
console.log(error)
})
}
render() {
return (
<Router>
<div className="Router">
<div className="Navbar">
<Header />
</div>
<div className="Wrapper">
<Route exact path="/" render={ (props) => (
<Dashboard {...props} pages={this.state.pages} />
)} />
<Route path="/admin/new-page" render={ (props) => (
<AddEditPage {...props} createPage={this.createPage} />
)} />
<Route path="/admin/edit-page/:id" render={ (props) => (
<AddEditPage {...props} page={this.setPage(props.match.params.id)} />
)} />
</div>
</div>
</Router>
);
}
}
export default App;
【问题讨论】:
标签: javascript reactjs