2016-12-25 11 views
0

私はreact-routerLink toの機能を使用しています。私は、ボタンのクリックでsecond componentを表示したいが、私のコードは、最初のコンポーネント内のボタンがありreact.jsでリンクが動作しないのはなぜですか?

http://codepen.io/anon/pen/GNadKZ?editors=1010

var Router = ReactRouter; 

var DefaultRoute = Router.DefaultRoute; 
var Link = Router.Link; 
var Route = Router.Route; 
var RouteHandler = Router.RouteHandler; 

class Abc extends React.Component { 
    handle(){ 
    alert('move to second component') 
    } 
    render(){ 
    return (<div><h1>second</h1><Link to="about"><button onClick={this.handle}>move to second page</button></Link></div>); 

    } 
} 
class Pqr extends React.Component { 
    render(){ 
    return (<div><h1>second</h1><button>click</button></div>) 

    } 
} 

ReactDOM.render((<Router> 
    <Route path="/" component={Abc}> 
     <Route path="about" component={Pqr}/> 
     </Route> 
     <Route path="*" component={NoMatch}/> 
    </Route> 
    </Router>),document.getElementById('root')); 

が機能していません。私はボタンをクリックして2番目のコンポーネントを表示したい。

+0

を – Codesingh

+0

はすでにあなたはあなたの他の質問を閉じる必要があり – user944513

+0

コードペンで共有する最初のコンポーネントを共有してください。 http://stackoverflow.com/questions/41318668/how-to-move-one-component-to-another-component-on-button-click-in-react – DirtyRedz

答えて

0

それが働いている場合

return (<div><h1>second</h1><Link to="about"><button onClick={this.handle}>move to second page</button></Link> {this.props.children} </div>); 

チェックをレンダリングする第一の成分の中で{this.props.children}を宣言します。

var Router = ReactRouter; 

var DefaultRoute = Router.DefaultRoute; 
var Link = Router.Link; 
var Route = Router.Route; 
var RouteHandler = Router.RouteHandler; 

class Abc extends React.Component { 
    handle(){ 
    alert('move to second component') 
    } 
    render(){ 
    console.log('inside first render'); 
    return (<div><h1>second</h1><Link to="about"><button onClick={this.handle}>move to second page</button></Link>{this.props.children}</div>); 

    } 
} 
class Pqr extends React.Component { 
    render(){ 
    return (<div><h1>second</h1><button>click</button></div>) 

    } 
} 

ReactDOM.render((<Router> 
    <Route path="/" component={Abc}> 
     <Route path="about" component={Pqr}/> 
     <Route path="*" component={NoMatch}/> 
    </Route> 
    </Router>),document.getElementById('root')); 
+0

pls share codepen – user944513

+0

not working ... !!! – user944513

+0

編集内容を確認してください – Codesingh

関連する問題