javascript - 将 "Route children"和 "cloneElement"转换为 RouterV4

标签 javascript reactjs router react-router-v4

我想在 React 项目中编写一个 Router。但是 Route children 和 cloneElement 到版本 4 时不再工作。我还没有找到演示或教程来教如何在 Router Version 4 中传递值。

有人想解决这个问题吗?

我在 Github 上的项目:https://github.com/LeMueller/musicplayer-by-react/tree/dev

非常感谢。

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>
        )
    }   
}

最佳答案

如果您希望通过组件将 Prop 传递给组件,那么您可以使用render,例如:

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

关于javascript - 将 "Route children"和 "cloneElement"转换为 RouterV4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46244010/

相关文章:

javascript - 如何获取滚动条以在div内查看

Angular2 2.0.0 组件单元测试导致错误 : Bootstrap at least one component before injecting Router

javascript - 在应用程序脚本中过滤二维数组

javascript - 单击容器div时如何旋转两个div以形成X?

javascript - 组件应该在什么嵌套级别从 Flux 中的 Stores 读取实体?

javascript - 重定向更改页面 URL 但不呈现新页面

javascript - Ember.js - 调用父模型 Hook 为子模型加载数据

java - 如何用 Java 确定我的路由器/网关的 IP?

javascript - Kendo UI,如何在 kendo 网格单元格上手动调用 validate()

javascript - Prototype/Scriptaculous/JavaScript 数据选取器控件