当前位置: 首页 > 知识库问答 >
问题:

响应参数不工作的路由器

穆飞星
2023-03-14
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找到,谢谢!

共有1个答案

龙嘉誉
2023-03-14

您只需打印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/显示良好