hinzugefügt werden Hallo Ich versuche, einen einfachen Form Builder mit react + redux zu erstellen.Wie Elemente dynamisch mit Hilfe von Redux
Ich habe ein Problem mit dem Hinzufügen von Elementen dynamisch aus der Seitenleiste zum Container.
action.js
export const addNewTextBox =() => {
return {
type: 'ADD_NEW_TEXT_BOX'
};
}
export const addNewName =() => {
return {
type: 'ADD_NEW_NAME'
};
}
export const updateChildren = (child) => {
return {
type: 'UPDATE_CHILDREN',
child
};
}
addElementsReducer.js
const initialState = {
addFormElementsVisible: false,
textBoxNum: 0,
nameNum: 0,
childKey: 0,
children: []
}
const addElements = (state = initialState, action) => {
switch (action.type) {
case 'ADD_NEW_TEXT_BOX':
return Object.assign({}, state, {
textBoxNum: state.textBoxNum + 1,
childKey: state.childKey + 1,
});
case 'ADD_NEW_NAME':
return Object.assign({}, state, {
nameNum: state.nameNum + 1,
childKey: state.childKey + 1,
});
case 'UPDATE_CHILDREN':
return Object.assign({}, state, {
children: state.children.concat([action.child])
});
default:
return state
}
}
export default addElements;
Die obigen Minderer und Aktion wird in meiner Layout.js Datei übergeben werden, die für das Hinzufügen von Elementen in die Sidebar und den Behälter macht.
Layout.js
<Sidebar
textBoxNum={this.props.textBoxNum}
nameNum={this.props.nameNum}
childKey={this.props.childKey}
updateChildren={this.props.actions.updateChildren}
addNewTextBox={this.props.actions.addNewTextBox}
addNewName={this.props.actions.addNewName}/>
<Create children={this.props.children}/>
Von erstelle ich bin Kinder ElementsContainer.js
<div>
<div className="new_elements">
{(() => {
this.props.children.map((child) => {
return (
<JsxParser
components={[TextBox]}
jsx={child}
/>
);
})
})()}
</div>
</div>
this.props.children
macht eine Reihe von Elementen aus der Seitenleiste zu senden.
Wie schiebe ich die Elemente aus meiner Seitenleiste in das Children's Array und render es auf meinem Container?
Wenn dies ein Duplikat ist, führen Sie mich bitte zur Lösung. Wenn das nicht genug ist, lassen Sie mich bitte wissen, was ich noch genauer erklären kann. Danke im Voraus.
Das hat funktioniert. Danke vielmals :) – leoc1f3r