2016-07-29 26 views
1

我正在构建基于电影列表的过滤器组件。我快到了。我已经设置了我的行动,减速机和组件。看着我的React/redux开发工具,一切似乎都没问题。但是我无法正确发送我的动作。如何分配OnChange值? e未定义错误React/redux

这里是我的组件事件:

<div> 
    Year: 
    <select 
    defaultValue={selectedYear} 
    onChange={e => onChangeYear(e.target.value)} 
    > 
    <option value="all" >All</option> 
    {years.map((y, i) => 
     <option key={i} value={y}>{y}</option> 
    )} 
    </select> 
</div> 

,这里是我的调度员:

const mapDispachToProps = (dispatch) => { 
    return { 
    onChangeYear:() => {dispatch (onYearChange(e.target.value)); 
     }, 
    }; 
}; 

onYearChange很好进口,以及在我的动作元件定义。 如何在我的调度程序中通过e.target.value没有任何错误?

谢谢。

回答

3

将您所选的onChange属性更改为仅设置为={onChangeYear},并在您的调度程序中接受e作为参数。

const mapDispachToProps = (dispatch) => { 
    return { 
     onChangeYear:() => {dispatch (onYearChange(e.target.value)); 
    }, 
}; 

成为

const mapDispachToProps = (dispatch) => { 
    return { 
     onChangeYear: (e) => {dispatch (onYearChange(e.target.value)); 
    }, 
}; 
+0

感谢。我不是在你的调度员接受你作为参数。 –

+0

我更新了我的答案,以显示您在哪里丢失参数 – John

+0

好的。我尝试了一些像但不是这样的东西:)那么为什么人们在level组件上使用'onChange = {e => onChangeYear(e.target.value)}'? –