2017-08-26 7 views
2

Ich habe eine Aktion definiert als solche in dem Schöpfer:Argument an Reduzierer übergeben?

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

in der Komponente nannte es:

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

Also, um herauszufinden, ich versuche, wie in der Reduktions Funktion kann ich thea greifen Argument übergeben? So sieht der Reducer aus:

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

Nebenbei, wenn das nicht der richtige Workflow ist, was soll ich tun? Das Endziel besteht darin, ein Textfeld zu haben, und der Übergabeknopf sendet den Inhalt dieses Textfelds an den Reduzierer.

Antwort

1

Sie die URL als Aktionsparameter wie

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

und dann in den Reduktions Zugang als action.url

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

Ich habe gerade versucht, dass leider action.url nicht gefunden wird, wenn sie aufgerufen passieren kann im Reducer (über action.url). Ich kopierte Ihr Beispiel wortwörtlich und ehrlich ich dachte, es würde funktionieren, da es syntaktischen Sinn zu machen schien ... – tweetypi

+0

Ich denke, es ist, weil die Aktion in einer Schnittstelle definiert ist: Schnittstelle SubmitLinkAction {Typ: 'SUBMIT_LINK'}, etwas muss sich dort ändern auch? Ich habe versucht, einen URL-Parameter hinzuzufügen, bekam aber Fehler, dass er dem Reduzierer nicht zugewiesen werden konnte – tweetypi

Verwandte Themen