2016-08-10 20 views
1

私はストレージコンポーネントの中に「this.propsを」合格しようとしています。このコードJavascriptマップで他のコンポーネントに小道具を渡す方法は?

import React from 'react'; 
import {connect} from 'react-redux'; 
import {bindActionCreators} from 'redux'; 
import 'materialize-css/sass/materialize.scss'; 
import 'font-awesome/scss/font-awesome.scss'; 
import Storage from './Storage.js' 
import {fetchStorage, loadAddStorageModal, selectStorage} from '../actions/StorageActions.js' 


class SideNavContainer extends React.Component { 
    componentWillMount() {   
     this.props.fetchStorage(); 
    } 
    render() { 
      console.log(this.props); 
     return (
      <ul id="slide-out" className="side-nav fixed">  
       { 
        var hold = this.props; 
        this.props.storages.fetchedStorages.map(function (storage, i) { 
         return <Storage key={i} >{storage.name}</Storage> 
        }) 
       } 
       <li> 
        <a className="waves-effect waves-light" onClick={() => this.props.loadAddStorageModal(true)}><i className="fa fa-plus" aria-hidden="true">Add</i></a> 
       </li> 
       <li className="hide-on-large-only"><a href="/Home/Index">Home</a></li> 
       <li className="hide-on-large-only"><a href="/Account/SignOut">Signout</a></li> 
      </ul> 
     ) 
    } 
} 

function mapStateToProps(state) { 
    return { 
     storages: state.storages 
    }; 
} 

function matchDispatchToProps(dispatch){ 
    return bindActionCreators({fetchStorage: fetchStorage, loadAddStorageModal: loadAddStorageModal, selectStorage: selectStorage }, dispatch); 
} 


export default connect(mapStateToProps, matchDispatchToProps)(SideNavContainer); 

を持っています。私はしようとしました

return <Storage {...this.props} key={i} >{storage.name}</Storage> 

しかし、私は範囲が変更されたので、もう動作しないと考えています。私はそれを "保留"と呼ばれる変数に入れようとしましたが、 "var"が予期しないトークンであるとアプリケーション全体がクラッシュします。

+0

'return'文の前に' VARホールドを= ... '移動してみてください。 –

答えて

1

は、自動バインドthisfat arrow style function expressionを使用します。

this.props.storages.fetchedStorages.map((storage, i) => { 
    return <Storage key={'storage-' + i} {...this.props}>{storage.name}</Storage>; 
}); 
+0

cool私はちょうど見ていたと私はすべての小道具を渡すが殺す以上だと思う。アクションクリエイターからselectStorageをどうやって渡すことができますか? – chobo2

+0

"bind" {this.props.selectStorage.bind(this)}を使用して取得できますが、自動バインドを使用して取得できません。多分私はそれを正しくしなかったでしょう – chobo2

関連する問題