Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从connect获取状态(MapStateTops)>;未定义_Javascript_Reactjs_Redux_Undefined_Connect - Fatal编程技术网

Javascript 从connect获取状态(MapStateTops)>;未定义

Javascript 从connect获取状态(MapStateTops)>;未定义,javascript,reactjs,redux,undefined,connect,Javascript,Reactjs,Redux,Undefined,Connect,当我记录我得到的道具时,我有点挣扎着去获得书的状态:未定义 有什么建议吗 import React from 'react'; import { connect } from 'react-redux'; import BookForm from './BookForm'; const EditBook = (props) => { console.log(props) return ( <div> hello </div>

当我记录我得到的道具时,我有点挣扎着去获得书的状态:未定义

有什么建议吗

import React from 'react';
import { connect } from 'react-redux';
import BookForm from './BookForm';

const EditBook = (props) => {
 console.log(props)
  return (
    <div>
      hello
    </div>
  );
};

const mapStateToProps = (state, props) => {
  return {
    book: state.books.find((book) => book.id === props.match.params.id)
  };
};

export default connect(mapStateToProps)(EditBook);
从“React”导入React;
从'react redux'导入{connect};
从“./BookForm”导入图书表单;
const EditBook=(道具)=>{
控制台日志(道具)
返回(
你好
);
};
常量mapStateToProps=(状态、道具)=>{
返回{
book:state.books.find((book)=>book.id==props.match.params.id)
};
};
导出默认连接(MapStateTops)(EditBook);

项目的其余部分在我的Github上:

我以前遇到过这个问题,
=
将失败,因为
book.id
props.match.params.id
的类型不同。
params
值始终是字符串-可以尝试
parseInt(props.match.params.id)
=
比较(使用类型强制)。

我设法找到了我的错误所在

在组件BookListItem中:

import React from 'react';
import { Link } from 'react-router-dom';

const BookListItem = ({ author, title, genre, text, id, pages }) => (
  <div>
    <Link to={`/edit/${id}`}><h2>{title}</h2></Link>
    <h3>by: {author}</h3>
    <p>{genre}</p>
    {pages > 0 && <p>{pages} pages</p>}
    <p>{text}</p>
    <p>-------------------------------</p>
  </div>
);

export default BookListItem;
从“React”导入React;
从'react router dom'导入{Link};
const BookListItem=({作者、标题、流派、文本、id、页面})=>(
{title}
作者:{作者}
{流派}

{pages>0&{pages}pages

} {text}

-------------------------------

); 导出默认BookListItem;

在${id}之前,我不幸使用了冒号{
/edit/:${id}
},因此book.id和props.match.params.id无法匹配

更新
BookListItem
中的
链接。您不需要在
${id}
之前使用导致问题

<Link to={`/edit/${id}`}><h2>{title}</h2></Link>
书籍表单中
构造函数
设置
道具.book

this.state = { ...props.book }

在MapStateTops函数中执行一些日志记录。在返回结果之前先注销查找结果是的,当我在mapStateToProps函数中执行console.Log(状态)时,它会正确返回状态,但一旦我想在组件编辑器中访问它,然后我得到未定义这可能是因为你的
书籍没有一本满足这个测试:
book.id===props.match.params.id
我检查了
book.id
props.match.params.id
typeof
;它们都是字符串,我在你之前几分钟就找到了,非常感谢!
this.state = { ...props.book }