2016-08-16 4 views
0

Я использую шаблон redux, но я не уверен, что просто передаю 1+ из моих методов действий в немой компонент.Как передать функции в ReactJs?

прямо сейчас в моей умной компоненте у меня есть что-то вроде

<AddStorageItemButton {...this.props} /> 

но курсов проходит все, и я не хочу этого.

Я хочу что-то вроде

<AddStorageItemButton test={()=>this.showAddStorageItemModal(this)} /> 

то в моем компоненте я пытался сделать

<a href="#"onClick={() => this.props.test(true) }> Add</a> 

Вот моя функция.

export function showAddStorageItemModal(show) { 
    return function (dispatch) { 
     dispatch({ type: actions.SHOW_ADD_STORAGE_ITEM_MODAL, payload: show }); 
    }; 
} 

Edit здесь больше моей структуры

import React from 'react'; 
import {connect} from 'react-redux'; 
import {bindActionCreators} from 'redux'; 

import 'materialize-css/sass/materialize.scss'; 
import '../styles/main.scss'; 


import AddStorageItemButton from './AddStorageItemButton.js'; 

import { showAddStorageItemModal } from '../actions/StorageItemActions.js'; 

class App extends React.Component { 
    render() { 
    return (
     <div> 
      <AddStorageItemButton {...this.props} test={this.props.showAddStorageItemModal(this)} /> 
     </div> 
    ); 
    } 
} 

function mapStateToProps(state) { 
    return { 
    // reducers 
    }; 
} 

function matchDispatchToProps(dispatch) { 
    return bindActionCreators({ 
    showAddStorageItemModal: showAddStorageItemModal, 
    }, dispatch); 
} 


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

ответ

0

// Я надеюсь, вы связать showAddStorageItemModal с this в конструкторе

<AddStorageItemButton test={this.showAddStorageItemModal} /> 




<a href="#"onClick={() => this.props.test(true)() }> Add</a> 
1

С showAddStorageItemModal возвращается замыкание, я думаю, что вы хотите сделать, это передать значение возврата этой функции в качестве опоры:

<AddStorageItemButton test={this.showAddStorageItemModal(this)} /> 

Таким образом, при нажатии кнопки, то dispatch будет вызываться

Смежные вопросы