Ich habe korrekt nach doc Redux Boilerplate eingerichtet. Ich habe einen Ordner mit verschiedenen Action-Dateien, die Aktionen enthält. In diesem Ordner habe ich eine index.js
erstellt, wo ich alle diese Dateien exportieren. Ich importiere es als benannten Export. Wenn ich die Funktion der Konsole selbst logge, ist sie da, aber wenn ich mich abmelde, ist this.props
nicht vorhanden. Ich habe versucht, die Funktion loggen außerhalb der Klasse undefined
.Redux Aktion nicht vorhanden
Wenn ich die Aktion direkt aus der Datei importieren, ist es in es definiert.
Aktionen/formActions.js
export const formInput = (key, val) => (
{
type: FORM_INPUT,
payload: { key, val }
}
);
Aktionen/index.js
export * from './formActions';
FormComp.js
import { formInput } from './actions'; // <-- this.props.formInput = undefined
o r
import { formInput } from './actions/formActions'; // <-- this.props.formInput = func
verbinden:
class InputField extends Component { ... }
const FormComp = connect(({ forms }) => ({ forms }), { formInput })(InputField);
export { FormComp };
edit1: Wenn ich in componentWillMount()
console.log(formInput) //without this.props
sein dort.
edit2 (Lösung?): Ich konnte Aktionen mit bindActionCreators
zu Requisiten abzubilden. Wie auch immer, ich verstehe nicht, warum ich bindActionCreators
verwenden muss und warum ich nicht einfach verbinden kann, wie es mit Aktionen als zweiter Parameter ist.
const FormComp = connect(
({ forms }) => ({ forms }),
dispatch => bindActionCreators({ formInput }, dispatch)
)(InputField);
Sie falsch formAction (s)? – TimH
@TimH Leider habe ich die Schreibweise in den Beispielen korrigiert. – parohy
FormComp.js befindet sich im selben Verzeichnis von Aktionen? Vielleicht versuchen Sie: {formInput} aus '../actions' importieren oder können Sie Ihren Dateibaum teilen? – Ilario