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 }