У меня есть родительский компонент, который отображает настраиваемую форму, я использую форму redux в настраиваемой форме, то, что я пытаюсь сделать, - это всякий раз, когда дочерний компонент отключается, если в форме есть какие-либо значения, которые мне нужно сделать, чтобы пользователь, хотите вы его сохранить или нет.
Итак, ниже приведен код, приглашение не появляется, я использую состояние и обновляю состояние, используя грязную (this.props) формы redux.
поэтому после componentWillUnmount рендеринга не происходит. Чего мне не хватает, я думаю, что после componentWillUnmount рендеринга не произойдет.
См. Приведенный ниже код.
**//APP.js**
import React from 'react';
class App extends Component{
state = {
data = []// array of data
}
render(){
return(
<div>
<CustomForm
data = {this.state.data}
/>
</div>
)
}
}
export default App
**//CustomForm.js**
import React from 'react';
import {connect} from 'react-redux';
import CustomField from './CustomField';
import { Field, reduxForm } from 'redux-form';
import {Prompt} from 'react-router'
class CustomForm extends Component{
state = {
formChanged: false
}
onSubmit = (values) => {
console.info(values)
}
componentWillUnmount(){
if (this.props.dirty){
this.setState({
formChanged: true
})
}
}
render(){
return(
<div>
{
this.state.formChanged?
<Prompt
when = {shouldBlockNavigation}
message='You have unsaved changes, are you sure you want to leave?'
/>
:
null
}
<Form onSubmit = {handleSubmit(this.onSubmit)}>
<Field
name = "field1"
type = "text"
component = {CustomField}
label = "field1"
/>
</Form>
</div>
)
}
}
export default reduxForm({
form: "NewForm",
destroyOnUnmount: true,
forceUnregisterOnUnmount: false
})(connect(mapStateToProps, mapDispatchToProps)(CustomForm))
Хорошо, так как мне найти лучшее решение для этого
Если вы хотите сохранить состояние после размонтирования компонента, сохраните грязное значение в redux. Честно говоря, трудно дать гораздо больше информации, не зная на самом деле варианта использования, с которым сталкивается заказчик.
Поэтому мне нужно отправить действие из componentWillUnmount, чтобы только решение
Я видел решение, но я не могу сделать это, когда componentWillMount stackoverflow.com/questions/32841757/…, есть ли другой способ
Вариант использования: у меня есть несколько вкладок, на одной из которых вводятся данные, а на следующей вкладке отображается список пользователей. Таким образом, две вкладки - это два разных компонента, использующих реагирующий маршрутизатор, поэтому всякий раз, когда пользователь вводит что-то при регистрации и уходит, не отправив запрос, должен спросить. Поэтому мне нужно вызвать componentWillUnmount. Но после этого, как вы сказали, даже если состояние изменилось, рендеринга не произойдет. Итак, это вариант использования
Поскольку компонент будет отключен, будет вызываться только тогда, когда компонент будет удален из Dom, вызывающее состояние набора ничего не сделает, потому что вы устанавливаете состояние для компонента, который больше не существует.