Reactjs 单击React+更改状态;重演
如何使用onClick事件更改currentPage状态的值?我想更改值后,点击按钮的页数 组成部分:Reactjs 单击React+更改状态;重演,reactjs,events,redux,pagination,onclick,Reactjs,Events,Redux,Pagination,Onclick,如何使用onClick事件更改currentPage状态的值?我想更改值后,点击按钮的页数 组成部分: import React from 'react'; import { connect } from 'react-redux'; import { setCurrentPage } from '../actions/pages'; const PageItem = ({ pageNumber }) => ( <li className="page-link"
import React from 'react';
import { connect } from 'react-redux';
import { setCurrentPage } from '../actions/pages';
const PageItem = ({ pageNumber }) => (
<li className="page-link"
onClick = {(e) => this.setCurrentPage(e) }
id = { pageNumber }>
{ pageNumber }
</li>
);
const mapStateToProps = (state) => {
return {
pages: state.pages.currentPage
};
};
const mapDispatchToProps = (dispatch) => ({
setCurrentPage: () => dispatch(setCurrentPage(pageNumber))
});
export default connect(mapStateToProps, mapDispatchToProps)(PageItem);
行动:
export const setCurrentPage = (currentPage) => ({
type: 'SET_CURRENT_PAGE',
currentPage
});
更新您的操作,如下所示。应调度操作,以便reducer能够处理它
export const setCurrentPage = (currentPage) => {
return (dispatch) => {
dispatch({type: 'SET_CURRENT_PAGE',currentPage);
}
}
更新您的操作,如下所示。应调度操作,以便reducer能够处理它
export const setCurrentPage = (currentPage) => {
return (dispatch) => {
dispatch({type: 'SET_CURRENT_PAGE',currentPage);
}
}
我纠正了你的一些错误。 首先,我假设您在根组件中创建了一个
提供程序标记,并向存储创建了一个实例(如果您不确定,请发送App.js文件的内容)
//组成部分
constpageitem=({pageNumber,setCurrentPage})=>(
setCurrentPage(页码)}
id={pageNumber}
>
{pageNumber}
);
常量mapStateToProps=状态=>{
返回{
页面:state.currentPage
};
};
const mapDispatchToProps={
setCurrentPage
};
导出默认连接(
MapStateTops,
mapDispatchToProps
)(第页项目);
const pagesReducerDefaultState={
当前页:1
};
一些想法:
- 不能在函数中使用
此
,只能在类中使用
mapDispatchToProps
可以与简单的Literal对象(如)一起使用。这样就不那么冗长了,因为您可能只会提到操作创建者
(在您的示例中,setCurrentPage
)
- 您已经在道具中发送了
setCurrentPage
,因此您可以像我写的那样检索它。也许ES6在这里是神秘的,所以ES5的等价物将是:
功能页面项(道具){
返回(
props.setCurrentPage(props.pageNumber)}
id={props.pageNumber}
>
{props.pageNumber}
);
};
//减速器
const initialState={
当前页:1
};
导出常量缩减器=(状态=初始状态,操作)=>{
开关(动作类型){
案例“设置当前页面”:
返回{
currentPage:action.currentPage
};
违约:
返回状态;
}
};
- 您的状态是一个具有属性
currentPage
的对象。因此,还原程序必须返回此类对象(因此返回操作。currentPage
不正确)
我修复了您的一些错误。
首先,我假设您在根组件中创建了一个提供程序标记,并向存储创建了一个实例(如果您不确定,请发送App.js文件的内容)
//组成部分
constpageitem=({pageNumber,setCurrentPage})=>(
setCurrentPage(页码)}
id={pageNumber}
>
{pageNumber}
);
常量mapStateToProps=状态=>{
返回{
页面:state.currentPage
};
};
const mapDispatchToProps={
setCurrentPage
};
导出默认连接(
MapStateTops,
mapDispatchToProps
)(第页项目);
const pagesReducerDefaultState={
当前页:1
};
一些想法:
- 不能在函数中使用
此
,只能在类中使用
mapDispatchToProps
可以与简单的Literal对象(如)一起使用。这样就不那么冗长了,因为您可能只会提到操作创建者
(在您的示例中,setCurrentPage
)
- 您已经在道具中发送了
setCurrentPage
,因此您可以像我写的那样检索它。也许ES6在这里是神秘的,所以ES5的等价物将是:
功能页面项(道具){
返回(
props.setCurrentPage(props.pageNumber)}
id={props.pageNumber}
>
{props.pageNumber}
);
};
//减速器
const initialState={
当前页:1
};
导出常量缩减器=(状态=初始状态,操作)=>{
开关(动作类型){
案例“设置当前页面”:
返回{
currentPage:action.currentPage
};
违约:
返回状态;
}
};
- 您的状态是一个具有属性
currentPage
的对象。因此,还原程序必须返回此类对象(因此返回操作。currentPage
不正确)
您是否尝试过将返回({currentPage:action.currentPage})
放在减速机中?是的,但仍然不起作用。将页面设置为onclick看起来是错误的,您尝试过吗onClick={()=>this.setCurrentPage(pageNumber)}
我尝试了这个,但我得到了错误:未捕获类型错误:无法读取onClick(PageItem.js:7)上未定义的属性“setCurrentPage”的“setCurrentPage”删除此方法已导入->onClick={()=>setCurrentPage(pageNumber)}
您尝试过返回吗({currentPage:action.currentPage})
在你的Reducer中?是的,但仍然不起作用。在onclick中设置页面看起来是错误的,你尝试过这个吗?onclick={()=>this.setCurrentPage(pageNumber)}
我尝试过这个,得到错误:uncaughttypeerror:无法读取onclick(PageItem.js:7)中未定义的属性“setCurrentPage”删除this
方法已导入->onClick={()=>setCurrentPage(pageNumber)}
非常感谢您的时间。我也阅读了您的文章,这对我非常有帮助。非常感谢您的时间。我也阅读了您的文章,这对我非常有帮助。