Update Dynamic Form Data - JavaScript / React
I have two input fields. I'm also using Fabric UI as a UI Framework for this app. I need to be able to update the view on submit. I am setting the props to the state in the component. Once set, I then pass those values to the view. Unsure how to retrieve and update said values.
{
isOpened: false,
label: "Home Address",
labelId: 2,
values:
[
{field: "homeAddress1", value: "2343 Main Street"},
{field: "homeAddress2", value: "New York, NY"}
]
}
I am updating the value in each object on submit.
class Info extends Component {
constructor (props) {
super(props)
this.state = {
isOpened: this.props.info.isOpened,
information: this.props.info
}
this.toggleEdit = this.toggleEdit.bind(this)
this.handleChange = this.handleChange.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
}
toggleEdit () {
const { isOpened } = this.state
this.setState({
isOpened: !isOpened
})
}
handleSubmit(event) {
console.log('event', this.refs.prefName.value)
event.preventDefault();
}
handleChange(event) {
console.log('logging state', this.state)
this.state.information.values.forEach(item => {
// const { value } = item.value
// this.setState({value: event.target.value})
})
// this.setState({value: event.target.value})
console.log('event on change', event.target.value)
}
render () {
const { isOpened } = this.state
const { information } = this.state
console.log(this.state, 'logging state')
return (
<div className="profile--info-wrapper">
<h2 className="profile--sub-header--light">
{information.label}
{information.editField && (
<Icon
iconName="Edit"
className={
'ms-IconExample ' +
(!isOpened ? 'pencil-icon' : 'pencil-icon-edit')
}
onClick={this.toggleEdit}
/>
)}
</h2>
<form className="profile--form">
{information.values.map(item => {
return !isOpened ? (
<FieldWrapper item={item} key={item.field} />
) : item.field === 'emergencyContactNumber' ||
item.field === 'phoneNumber' ? (
<MaskedTextField
label={item.fieldName}
mask="999-999-9999"
value={item.value}
key={item.field}
ref={item.field}
/>
) : (
<TextField
label={item.fieldName}
value={item.value}
key={item.field}
onChange={this.handleChange}
ref={item.field}
/>
)
})}
{isOpened && (
<div className="ms-Grid-row button--wrapper">
<PrimaryButton
data-automation-id="test"
text="Save"
onClick={this.handleSubmit}
allowDisabledFocus={true}
/>
<DefaultButton
data-automation-id="test"
text="Cancel"
onClick={this.toggleEdit}
/>
</div>
)}
</form>
</div>
)
}
}
javascript arrays reactjs forms
add a comment |
I have two input fields. I'm also using Fabric UI as a UI Framework for this app. I need to be able to update the view on submit. I am setting the props to the state in the component. Once set, I then pass those values to the view. Unsure how to retrieve and update said values.
{
isOpened: false,
label: "Home Address",
labelId: 2,
values:
[
{field: "homeAddress1", value: "2343 Main Street"},
{field: "homeAddress2", value: "New York, NY"}
]
}
I am updating the value in each object on submit.
class Info extends Component {
constructor (props) {
super(props)
this.state = {
isOpened: this.props.info.isOpened,
information: this.props.info
}
this.toggleEdit = this.toggleEdit.bind(this)
this.handleChange = this.handleChange.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
}
toggleEdit () {
const { isOpened } = this.state
this.setState({
isOpened: !isOpened
})
}
handleSubmit(event) {
console.log('event', this.refs.prefName.value)
event.preventDefault();
}
handleChange(event) {
console.log('logging state', this.state)
this.state.information.values.forEach(item => {
// const { value } = item.value
// this.setState({value: event.target.value})
})
// this.setState({value: event.target.value})
console.log('event on change', event.target.value)
}
render () {
const { isOpened } = this.state
const { information } = this.state
console.log(this.state, 'logging state')
return (
<div className="profile--info-wrapper">
<h2 className="profile--sub-header--light">
{information.label}
{information.editField && (
<Icon
iconName="Edit"
className={
'ms-IconExample ' +
(!isOpened ? 'pencil-icon' : 'pencil-icon-edit')
}
onClick={this.toggleEdit}
/>
)}
</h2>
<form className="profile--form">
{information.values.map(item => {
return !isOpened ? (
<FieldWrapper item={item} key={item.field} />
) : item.field === 'emergencyContactNumber' ||
item.field === 'phoneNumber' ? (
<MaskedTextField
label={item.fieldName}
mask="999-999-9999"
value={item.value}
key={item.field}
ref={item.field}
/>
) : (
<TextField
label={item.fieldName}
value={item.value}
key={item.field}
onChange={this.handleChange}
ref={item.field}
/>
)
})}
{isOpened && (
<div className="ms-Grid-row button--wrapper">
<PrimaryButton
data-automation-id="test"
text="Save"
onClick={this.handleSubmit}
allowDisabledFocus={true}
/>
<DefaultButton
data-automation-id="test"
text="Cancel"
onClick={this.toggleEdit}
/>
</div>
)}
</form>
</div>
)
}
}
javascript arrays reactjs forms
add a comment |
I have two input fields. I'm also using Fabric UI as a UI Framework for this app. I need to be able to update the view on submit. I am setting the props to the state in the component. Once set, I then pass those values to the view. Unsure how to retrieve and update said values.
{
isOpened: false,
label: "Home Address",
labelId: 2,
values:
[
{field: "homeAddress1", value: "2343 Main Street"},
{field: "homeAddress2", value: "New York, NY"}
]
}
I am updating the value in each object on submit.
class Info extends Component {
constructor (props) {
super(props)
this.state = {
isOpened: this.props.info.isOpened,
information: this.props.info
}
this.toggleEdit = this.toggleEdit.bind(this)
this.handleChange = this.handleChange.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
}
toggleEdit () {
const { isOpened } = this.state
this.setState({
isOpened: !isOpened
})
}
handleSubmit(event) {
console.log('event', this.refs.prefName.value)
event.preventDefault();
}
handleChange(event) {
console.log('logging state', this.state)
this.state.information.values.forEach(item => {
// const { value } = item.value
// this.setState({value: event.target.value})
})
// this.setState({value: event.target.value})
console.log('event on change', event.target.value)
}
render () {
const { isOpened } = this.state
const { information } = this.state
console.log(this.state, 'logging state')
return (
<div className="profile--info-wrapper">
<h2 className="profile--sub-header--light">
{information.label}
{information.editField && (
<Icon
iconName="Edit"
className={
'ms-IconExample ' +
(!isOpened ? 'pencil-icon' : 'pencil-icon-edit')
}
onClick={this.toggleEdit}
/>
)}
</h2>
<form className="profile--form">
{information.values.map(item => {
return !isOpened ? (
<FieldWrapper item={item} key={item.field} />
) : item.field === 'emergencyContactNumber' ||
item.field === 'phoneNumber' ? (
<MaskedTextField
label={item.fieldName}
mask="999-999-9999"
value={item.value}
key={item.field}
ref={item.field}
/>
) : (
<TextField
label={item.fieldName}
value={item.value}
key={item.field}
onChange={this.handleChange}
ref={item.field}
/>
)
})}
{isOpened && (
<div className="ms-Grid-row button--wrapper">
<PrimaryButton
data-automation-id="test"
text="Save"
onClick={this.handleSubmit}
allowDisabledFocus={true}
/>
<DefaultButton
data-automation-id="test"
text="Cancel"
onClick={this.toggleEdit}
/>
</div>
)}
</form>
</div>
)
}
}
javascript arrays reactjs forms
I have two input fields. I'm also using Fabric UI as a UI Framework for this app. I need to be able to update the view on submit. I am setting the props to the state in the component. Once set, I then pass those values to the view. Unsure how to retrieve and update said values.
{
isOpened: false,
label: "Home Address",
labelId: 2,
values:
[
{field: "homeAddress1", value: "2343 Main Street"},
{field: "homeAddress2", value: "New York, NY"}
]
}
I am updating the value in each object on submit.
class Info extends Component {
constructor (props) {
super(props)
this.state = {
isOpened: this.props.info.isOpened,
information: this.props.info
}
this.toggleEdit = this.toggleEdit.bind(this)
this.handleChange = this.handleChange.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
}
toggleEdit () {
const { isOpened } = this.state
this.setState({
isOpened: !isOpened
})
}
handleSubmit(event) {
console.log('event', this.refs.prefName.value)
event.preventDefault();
}
handleChange(event) {
console.log('logging state', this.state)
this.state.information.values.forEach(item => {
// const { value } = item.value
// this.setState({value: event.target.value})
})
// this.setState({value: event.target.value})
console.log('event on change', event.target.value)
}
render () {
const { isOpened } = this.state
const { information } = this.state
console.log(this.state, 'logging state')
return (
<div className="profile--info-wrapper">
<h2 className="profile--sub-header--light">
{information.label}
{information.editField && (
<Icon
iconName="Edit"
className={
'ms-IconExample ' +
(!isOpened ? 'pencil-icon' : 'pencil-icon-edit')
}
onClick={this.toggleEdit}
/>
)}
</h2>
<form className="profile--form">
{information.values.map(item => {
return !isOpened ? (
<FieldWrapper item={item} key={item.field} />
) : item.field === 'emergencyContactNumber' ||
item.field === 'phoneNumber' ? (
<MaskedTextField
label={item.fieldName}
mask="999-999-9999"
value={item.value}
key={item.field}
ref={item.field}
/>
) : (
<TextField
label={item.fieldName}
value={item.value}
key={item.field}
onChange={this.handleChange}
ref={item.field}
/>
)
})}
{isOpened && (
<div className="ms-Grid-row button--wrapper">
<PrimaryButton
data-automation-id="test"
text="Save"
onClick={this.handleSubmit}
allowDisabledFocus={true}
/>
<DefaultButton
data-automation-id="test"
text="Cancel"
onClick={this.toggleEdit}
/>
</div>
)}
</form>
</div>
)
}
}
javascript arrays reactjs forms
javascript arrays reactjs forms
asked Nov 26 '18 at 4:55
userlkjsflkdsvmuserlkjsflkdsvm
168627
168627
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53474974%2fupdate-dynamic-form-data-javascript-react%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53474974%2fupdate-dynamic-form-data-javascript-react%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown