av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

javascript - react router 匹配路由組件后如何在組件中 dispatch action 一次?

瀏覽:130日期:2023-04-30 10:38:46

問題描述

用到了 react, react-router 4.1.1, redux 3.7.0, react-redux 5.0.5

Route配置為 <Route path='/:id' component={ Datagrid }/>,其中 id 為 path 路徑,Datagrid 為一個展示數據表格的容器組件,主體內容為antd的 Table 組件,其中 columns 和 dataSource 要求能根據 path 切換,我想實現當點擊 /user 時加載 user 的 columns 和 dataSource,當點擊/odm 時加載 odm 的 columns 和 dataSource。

Datagrid 組件如下

import React, { Component } from ’react’import { Table, Button } from ’antd’import ’./index.less’import { fetchColumn } from ’../../actions/column’import { connect } from ’react-redux’import { withRouter } from ’react-router-dom’class Datagrid extends Component { render() { let id = this.props.match.params.id console.log(id) this.props.dispatch(fetchColumn(id)) return ( <p><Table columns={this.props.column}/> </p> ) }}const mapStateToProps = (state) => { return state}export default withRouter(connect(mapStateToProps)(Datagrid))

當點擊 /user path 時確實可以加載 user 的 column,但是dispatch(fetchColumn(id))會無限循環,如果把dispatch(fetchColumn(id))放在componentDidMount中,只會加載一次,當點擊 /odm 時 Datagrid 組件又不會重新渲染了,不知道該怎么搞。

問題解答

回答1:

class Datagrid extends Component { //用于第一次掛載時請求 componentDidMount() { let id = this.props.match.params.id console.log(id) this.props.dispatch(fetchColumn(id)) } //當props發生改變時請求 componentWillReceiveProps(nextProps) { let id = this.props.match.params.id console.log(id) if(this.props.match.params.id != nextProps.match.params.id) {this.props.dispatch(fetchColumn(nextProps.match.params.id)) } } render() { return ( <p><Table columns={this.props.column}/> </p> ) }}回答2:

當點擊/odm 時加載 odm 的 columns 和 dataSource。

那就在點擊事件里 dispatch 唄。

說錯了,試試 componentDidUpdate。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 亚洲精品电影网在线观看 | 午夜影院在线观看 | 日韩欧美三区 | 国产日产精品一区二区三区四区 | 亚洲bt 欧美bt 日本bt | 国产一区二区三区在线观看免费 | 国产免国产免费 | 国产日韩精品一区二区三区 | 蜜桃五月天 | 欧美精品一区二区三区在线播放 | 偷拍自拍在线观看 | 中文字幕在线一 | 在线观看久草 | 不卡一区 | 91欧美精品成人综合在线观看 | 亚洲区在线| 国产精品久久久久久亚洲调教 | 国产99久久 | 九色视频网站 | 日日爱夜夜操 | 91网在线播放| 在线91| 黄色在线免费观看视频网站 | 狠狠做深爱婷婷综合一区 | 一级黄色片免费在线观看 | 国产区一区二区三区 | 国产综合视频 | 红色av社区 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 亚洲精品电影在线观看 | 不卡在线视频 | 一区二区三区不卡视频 | 久久国产精品久久久久 | 中文字幕91| 97超在线视频 | 狠狠艹 | 国产99久久精品一区二区永久免费 | 日本免费黄色一级片 | 91一区二区三区在线观看 | 国产精品一级在线观看 | 中文字幕在线观看精品 |