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

无法读取未定义的反应redux[重复]的属性'历史'

左丘宜年
2023-03-14

我在Submit上有一个表单,它必须路由到list.js。当我遇到以下错误时,如何路由到list.js以在单击“添加文章”按钮时显示所有文章

                   TypeError: Cannot read property 'history' of undefined
                ConnectedForm.handleSubmit
                E:/reacr-redux/src/components/Form.js:31
                28 |     const id = uuidvl();
                29 |     this.props.addArticle({ title , id });
                30 |     this.setState({title:''});
                > 31 |     this.props.router.history.push('/List');
                    | ^  32 | }                
                33 | render(){
                34 |     const {title}=this.state;
                View compiled
                ▶ 18 stack frames were collapsed.
                This screen is visible only in development. It will not appear if the app crashes in production.
                Open your browser’s developer console to further inspect this error.

组件/form.js

                import React ,{ Component } from 'react';
            import {connect} from 'react-redux';
            import uuidvl from 'uuid';
            import { addArticle } from '../js/actions/index';
            import PropTypes from 'prop-types';
            const mapDispatchtoProps= dispatch=>{
                return{
                    addArticle:article =>dispatch(addArticle(article))
                };};
            class ConnectedForm extends Component{
                constructor(){
                    super();
                    this.state={
                        title:''
                    } }
                static contextTypes={
                    router:PropTypes.object,
                }
                handleChange(eVal,nm){
                    this.setState({"title":eVal})
                }                    
                handleSubmit(ev){
                    ev.preventDefault();
                    const { title }=this.state;
                    const id = uuidvl();
                    this.props.addArticle({ title , id });
                    this.setState({title:''});
                    this.props.router.history.push('/List');
                }                
                render(){
                    const {title}=this.state;
                    return(
                        <div>
                            <form onSubmit={this.handleSubmit.bind(this)}>
                                <input type='text' value={title} id="title" onChange={(e)=>this.handleChange(e.target.value,'article')}/>
                                <button type="submit">Add</button>
                            </form>
                        </div>
                    );} }
            const Form =connect(null,mapDispatchtoProps)(ConnectedForm);
            export default Form;

src/index

                    import index from "./js/index";
                import React from 'react';
                import { render } from 'react-dom';
                import { Provider } from 'react-redux';
                import store from './js/store/index';
                import App from './App';
                import * as serviceWorker from './serviceWorker';
                import { BrowserRouter as Router , Route , Switch } from 'react-router-dom';
                import Form from './components/Form';
                import List from './components/List';
                import Userdashboard from './components/unimoniC/Userdashboard';
                render(
                    <Provider store={store}>
                        <Router>
                            <Switch>
                                <Route exact path="/" component={App}/>
                                <Route path="/Form" component={Form}/>
                                <Route path="/List" component={List}/>
                                <Route path="/Userdashboard" component={Userdashboard}/>
                            </Switch>
                        </Router>
                    </Provider>
                , document.getElementById('root'))
                serviceWorker.unregister();

当我使用react-router dom时,我应该使用react-redux路由器吗?我需要安装一些插件还是withrouter。我不知道。有人能告诉我哪里出了问题吗?

共有1个答案

夏侯涵映
2023-03-14

您需要在路由器中传递历史={浏览器历史}。类似这样的东西

 类似资料:
  • 我已经禁用了react devtools和redux devtools。 几个小时以来,我一直在寻找处理这个问题的方法,大多数问题都在编写中,而我根本不改变代码。 我真不明白为什么会这样。我不做任何更改,我做的最后一件事只是做git,将origin master推到我的存储库中,当我编译时,突然出现了这样的错误: 还原:

  • 问题内容: 除了添加新笔记,一切似乎都可以在这个小应用程序中使用。按钮位于Board组件上。 我知道这个问题通常是由于未正确绑定“ this”的值引起的。我不确定这是否是这里的问题,或者我是否缺少其他东西。谢谢 演示:http://jsbin.com/pewahi/edit?js,输出 问题答案: 您的代码很好。这可能是JSBin的错误,以及如何使用Babel处理转译。如果将杂项添加到代码的顶部,

  • 我正在用onsenui和react列清单。但我不能从onchanged调用绑定。 我不明白。。。。有人能解决这个问题吗? 这是我的密码。我想从输入项调用handlechanged方法。但是,无法读取未定义的属性“bind”被引发。

  • 我正在设置一个带有反应的discord机器人,但第二个反应中有一个错误,按编号排列,但我找不到它。这可能是一个循环错误,但我已经尝试更改变量的名称,没有任何帮助。我也为代码的长度感到抱歉,但我已尝试将其缩短到最大值。 点击命令,机器人应该回复一条包含5种可能反应的消息。 如果我按反应1,会出现第二条消息,其中包含嵌入中的描述、不和谐和日期。 在这条消息的底部应该会出现一个反应✅。 除了当我按下这个

  • 我试图用ReactJS更新组件的状态,但得到以下错误。下面提供了错误和代码。 可能未处理的拒绝[1]类型错误:无法读取未定义的属性“setState”

  • 问题内容: 我收到以下错误 未捕获的TypeError:无法读取未定义的属性’setState’ 即使在构造函数中绑定了delta之后。 问题答案: 这是由于不受约束。 为了绑定设置在构造函数中: 当前,您正在调用绑定。但是bind返回一个绑定函数。您需要将函数设置为其绑定值。