2017-08-26 295 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