【发布时间】:2016-12-04 14:21:28
【问题描述】:
我有一个待办事项应用程序,我正在尝试选择一个项目并将其发送到要编辑的页面。我看过这篇帖子Getting query parameters from react-router hash fragment 并注意到他们正在使用this.props.location.query
我想要完成的是获取查询参数并将其显示在输入框中进行编辑。
import * as React from 'react'
import { Router, Route, IndexRoute, hashHistory, browserHistory, Link } from 'react-router'
import {ITask, IStoreAction, ActionType} from '../model/TasksModel'
import store from '../store/Store'
interface TaskEditProp {
task: ITask
}
class TaskEdit extends React.Component<TaskEditProp, {}>{
constructor() {
super();
this.state = store.getState()
store.subscribe(() => {
this.setState(store.getState())
})
//todo: console.log(this.props.location);
}
onSave = (e) => {
e.preventDefault();
var refs: any = this.refs;
var task: ITask = {
index: this.props.task ? this.props.task.index : 0,
text: refs.text.value,
done: false
}
var storeAction: IStoreAction = {
type: ActionType.EDIT_TASK,
task
}
store.dispatch(storeAction)
browserHistory.push('/')
}
onCancel = (e) => {
e.preventDefault();
browserHistory.push('/')
}
render() {
const { props: { children } } = this;
return (
<div className="">
<h3>Edit Task</h3>
<form onSubmit={this.onSave}>
<fieldset className="form-group">
<label for="task">Task</label>
<input type="text" ref="text" className="form-control" >{this.props.location}</input>
</fieldset>
<div className="btn-group">
<button className="btn btn-primary" >Save</button>
<button className="btn btn-warning" onClick={this.onCancel} >Cancel</button>
</div>
</form>
</div>
)
}
}
export default TaskEdit;
我假设我的界面不包含位置,所以道具不知道位置。
我的路线是这样定义的:
var Routes = (
<Router history={browserHistory}>
<Route path="/" component={Tasks}>
<IndexRoute component={TaskList} />
<Route path="/add" component={TaskAdd} />
<Route path="/edit/:id" component={TaskEdit} />
</Route>
<Route path="/about" component={About}/>
</Router>
)
在我的商店被派出后,我打电话给browserHistory.push('/edit/'+task.index),它将我发送到正确的视图,但我无法访问查询参数。我的其余代码可以在https://github.com/crh225/HotReactAsp/tree/master/src/HotReactAsp/content找到,谢谢!
【问题讨论】:
标签: typescript redux react-router