react map出的组件点击事件如何传index到store里

这是Table组件

{this.props.tableData.map((item, index) => {
    return (
    <tr key={index}>
        <td>{item.id}</td>
        <td>{item.name}</td>
        <td>{item.price}</td>
        <td onClick={this.props.handleClick}>修改</td>
    </tr>)
})}

这是调用Table组件的父组件

<TableCom title={['id', 'name', 'price','操作']} 
    tableData={this.props.reduxTableList}
    handleClick={this.props.changeTable}>
</TableCom>

const mapDispatch = (dispatch) => {
    return {
        changeTable(){
            dispatch(reduxTableState())
        }
    }
}

这是store的reducer

export default (state = defaultState, action) => {
    if (action.type === 'changeTable') {
        console.log(666)
        return newState
    }

我想改变store里table的state的值,需要在store里知道点击的是循环出的哪个,所以需要知道index
<td onClick={this.props.handleClick(index)}>修改</td>这样是不行的

阅读 3k
2 个回答

<td onClick={this.props.handleClick.bind(this,index)}>修改</td>
<td onClick={()=>this.props.handleClick(index)}>修改</td>

const mapDispatch = (dispatch) => {
    return {
        changeTable(index){
            console.log(index)
            dispatch(reduxTableState())
        }
    }
}

接上个答案,

export const reduxTableState = (index) => {
    return {
        type: constants.TABLE_STORE,
        index
    }
}

到store里就可以在action里取到index了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题