2017-08-26 131 views
2

我有一个动作定义为这样的创作者:将参数传递给reducer?

export const actionCreators = { 
    submitlink: (url: string) => <SubmitLinkAction>{ type: 'SUBMIT_LINK' } 
} 
在组件

称之为:

public render() { 
    return <div> 
     <div>{this.props.url}</div> 
     <button onClick={() => 
     { 
      this.props.submitlink("google.com"); 
     }}>submit</button> 
    </div> 
} 

所以我试图找出如何在减速功能,能抢我西娅参议会通过了吗?这就是减速机的样子:

export const reducer: Reducer<SubmitLinkState> = (state: SubmitLinkState, action: KnownAction) => {...} 

另外,如果这不是正确的工作流程,我该怎么办?最终目标是有一个文本框,提交按钮不会将该文本框的内容发送给reducer。

回答

1

您可以通过URL像

export const actionCreators = { 
    submitlink: (url: string) => <SubmitLinkAction>{ type: 'SUBMIT_LINK', url} 
} 

动作参数,然后在减速访问它作为action.url

export const reducer: Reducer<SubmitLinkState> = (state: SubmitLinkState, action: KnownAction) => { 
    ... 
    console.log(action.url); 
} 
+0

我只是去尝试,可惜action.url没有找到调用时在reducer中(通过action.url)。我认真地复制了你的例子,我认为它会起作用,因为它似乎使句法上有意义...... – tweetypi

+0

我认为这是因为动作是在一个接口中定义的:interface SubmitLinkAction {type:'SUBMIT_LINK'},需要改变的地方太?我尝试添加一个url参数,但有关它不能分配给reducer的错误 – tweetypi