transform “Route children” and “cloneElement” to RouterV4

邮差的信 提交于 2019-12-11 09:05:49

问题


I want to write a Router in React Project. But Route children and cloneElement work not anymore by Version 4. I haven't found demo or tutor to teach how to pass value in router in Router Version 4.

Have someone idea to solve that?

My project in Github: https://github.com/LeMueller/musicplayer-by-react/tree/dev

Thanks a lot.

import React, {Component} from 'react';
import Header from './commen/header.js';
import Player from './page/player.js';
import {MUSIC_LIST} from '../config/musiclist';
import MusicListUI from './page/musiclistui.js';

import {HashRouter, Switch, Route, Link} from 'react-router-dom';


class MusicApp extends Component{
    constructor(props){
        super(props);
        this.state={
            musiclist: MUSIC_LIST,
            currentMusicItem: MUSIC_LIST[0]
        }
    }

    componentDidMount(){


        $('#player').jPlayer({
            ready:function(){
                $(this).jPlayer('setMedia',{
                    mp3:'http://oj4t8z2d5.bkt.clouddn.com/%E9%AD%94%E9%AC%BC%E4%B8%AD%E7%9A%84%E5%A4%A9%E4%BD%BF.mp3'
                }).jPlayer('play');
            },
            supplied:'mp3',
            wmode: 'window'
        });


    }

    componentWillUnMount(){

    }

    render(){
        return(
            <div>
                {React.cloneElement(this.props.children, this.state)}               
            </div>
        )
    }
}

export default class Root extends Component{
    render(){
        return(
            <HashRouter>
                <div>
                    <Header/>
                    <Route exact path="/" component={MusicApp}>
                        <Route exact path="/" component={Player }></Route>
                        <Route path="/list" component={MusicListUI}></Route>
                    </Route>
                </div>

            </HashRouter>
        )
    }   
}

回答1:


If you are looking to pass props to a component via a component, then you can use render, for example:

<Route exact path="/" render={(props) => <Player example={ props.example } /> }></Route>


来源:https://stackoverflow.com/questions/46244010/transform-route-children-and-cloneelement-to-routerv4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!