2016-09-26 48 views
2
import React,{ Component } from 'react'; 
import { connect } from 'react-redux'; 
import { itemid } from '../actions/action'; 


class DetailPage extends Component{ 
    componentWillUpdate(){ 
    this.props.dispatch(itemid([this.props.params.item,`${this.props.params.item}${this.props.params.id}`])) 
    } 
    render(){ 
     const { dispatch } = this.props; 
     return(
       <div> 
        {this.props.params.id} 
       </div> 
      ) 
    } 
} 
function selectstate(state){ 
    return{ 
     state 
    } 
} 
export default connect(selectstate)(DetailPage) 

// {} this.props.params.item是從反應路由器(路徑( '/細節/項目/ ID'))最大調用堆棧大小超出反應

爲什麼我的調度是無限循環,直到 錯誤(超出最大調用堆棧大小)

回答

2

您正在發送調度componentWillUpdate。所以每次更新狀態時,都會再次更新狀態。你應該從未修改狀態componentWillUpdate:https://facebook.github.io/react/docs/component-specs.html#updating-componentwillupdate

順便說一句,在componentWillReceiveProps這樣做很可能會做同樣的事情,因爲你的狀態,從終極版店,將做爲props

問題是你爲什麼要在更新後做調度?是否因爲下面的功能設置狀態?

如果您希望在設置特定狀態後進行分派,則可以使用shouldComponentUpdate來阻止除該狀態以外的更新。但是這在這種配置中感覺就像是一種副作用。我認爲你在設置狀態的同時調度事件要好得多,或者作爲回調。

相關問題