2017-01-22 82 views
0

这是我到目前为止有:如何使用React/Redux发送内容?

export default connect(
    (state) => ({ 
    search: state.search 
    }), 
    (dispatch) => ({ 
    onSearch: (location) => (q) => dispatch(actions.push(getUrlWithQS(location, { qs: { q } }))), 
    onClipCardClick: (location) => (clip) => dispatch(actions.push(getUrlWithQS(location, { pathname: `/clips/${clip.id}` }))) 
    }), 
    (stateProps, dispatchProps, ownProps) => ({ 
    ...stateProps, 
    ...dispatchProps, 
    ...ownProps, 
    onSearch: dispatchProps.onSearch(ownProps.location), 
    onClipCardClick: dispatchProps.onClipCardClick(ownProps.location) 
    }) 
)(Home) 

我没有写这个(我继承),所以在onSearch显然调度的东西,通过新的查询?那么会发生什么情况是URL更改为http://localhost:5000/?q=whatever

如何在不更改URL的情况下发送邮件?

编辑

import { push, goBack } from 'react-router-redux' 
actions.push = push 

而触发onSearch组件的样子:

onChange (e) { 
    if(this.state.isMobile) { 
     return this.props.onSubmit(e.target.value) 
    } 

    if(this.props.autoSearch) { 
     this.props.onSubmit(e.target.value) 
    } 

    this.props.onAutocomplete(e.target.value) 
    this.setState({ 
     value: e.target.value, 
     selectedSearch: false 
    }) 

    } 

回答

1

我会假设onSearch从形式的onsubmit处理调用。它是表单提交(不会自动阻止通过反应)导致URL更改,而不是调度。

您可以使用:

event.stopPropagation() 
event.preventDefault() 
形式onsubmit处理

,所以提交不会被浏览器处理。

+0

它不是在表单提交。它处于输入框的更改事件中。 – Shamoon

+0

输入框不在最终提交的表单中吗? – lorefnon

+0

你能提供'actions.push'的定义吗? – lorefnon

相关问题