在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5/ react-router v4 如何靜態(tài)傳值給子組件

react-router v4 如何靜態(tài)傳值給子組件

我是從Vue轉(zhuǎn)過來的,可能思路有點(diǎn)受限吧,如果有其他思路請(qǐng)指正

在我想對(duì)一個(gè)組件進(jìn)行多次渲染時(shí),需要傳入一個(gè)id值來讓組件渲染不同內(nèi)容,
但是<Route>沒辦法靜態(tài)的傳值給子組件

class Home extends Component{
  render(){
    let listData = Object.values(this.props.directory);
    return(
      <div className="home">
          <ul className="row home_content">
            {
              listData.map((list, key) => (
                <li className="ome_list" key={key}>
                  <Route exact path="/" component={Label} listid={list.id}/>
                </li>
              ))
            }
          </ul>
      </div>
    )
  }
}

子組件

class Label extends Component{
  render(){
    const list = this.props.directory[this.props.listid];
    return(
      <div className="mlabel">
        <h3 className="mlabel_title">{list.title}</h3>
        <ol className="mlabel_content">
          <li className="mlabel_content_list">list.text[0]</li>
          <li className="mlabel_content_list">list.text[1]</li>
        </ol>
      </div>
    )
  }
}

我的思路是在Home組件 <Route>里 傳入listid給子組件,
然后在子組件Label里 獲取listid 然后去state里找對(duì)應(yīng)的數(shù)據(jù)渲染組件,
但是子組件里 this.props.listid 是undefined

我知道可以通過URL、query、state這種通過<Link>方法傳值,但無法解決我遇到的問題

所以想問問,有什么方法可以靜態(tài)不經(jīng)跳轉(zhuǎn)的傳值給子組件

回答
編輯回答
心沉

react-router v4的route組件有一個(gè)render屬性,可以用它來傳遞自定義參數(shù):

component={myComp}

改為

render={(props)=><myComp {...props} />}
2017年3月7日 04:59