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找到,谢谢!
您只需打印this.props
即可查看道具是如何呈现的,并找到提取所需数据的正确方法。
我不知道您使用的是哪个版本的react-router
,但据我所知,获取查询参数的正确方法是:
let { id } = this.props.params;
还有这个
index: this.props.task ? this.props.task.index : 0,
index: this.props.params.id ? this.props.params.id : 0,
我在react中编写了一个带有自动建议的简单搜索组件,它调用themoviedb。我正在使用react router dom,并在app.js中定义了如下路由参数: 搜索组件如下所示: 我的问题是,当点击链接时,它会改变url,但它会停留在同一个站点上。如果我不使用react路由器dom链接组件,只使用元素,它可以正常工作,但所有东西都会重新渲染。 **在app.js中更新我的react路由器代码
我的目标是让http://mydomain/route1呈现React组件Component1,让http://mydomain/route2呈现component2。因此,我认为编写如下路线是很自然的: http://mydomain/route1按预期工作,但http://mydomain/route2反而呈现Component1。 然后我读了这个问题,并将路线改为:
问题内容: 我想用可选的path参数声明一个路径,因此当我添加它时,页面会做一些额外的事情(例如,填充一些数据): http:// localhost / app / path / to / page <=渲染页面 http:// localhost / app / path / to / page / pathParam <=根据pathParam使用某些数据渲染页面 在我的React Rout
我的导航不工作,因为某些原因,我有另一个应用程序运行良好,但这一个不能找到错误,请帮助 反应路由器不工作。反应JS 我需要你的帮助。 使用react-router,我可以使用Link元素创建由react router本地处理的链接。
我是新的反应,不知道为什么这不会起作用。 我的路由器代码在这里: 因此,这段代码所发生的情况是: localhost/显示良好