Используя подсказку реактивного маршрутизатора в componentWillUnmount

У меня есть родительский компонент, который отображает настраиваемую форму, я использую форму 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))

Поскольку компонент будет отключен, будет вызываться только тогда, когда компонент будет удален из Dom, вызывающее состояние набора ничего не сделает, потому что вы устанавливаете состояние для компонента, который больше не существует.

ruby_newbie 18.12.2018 17:40

Хорошо, так как мне найти лучшее решение для этого

Learner 18.12.2018 18:14

Если вы хотите сохранить состояние после размонтирования компонента, сохраните грязное значение в redux. Честно говоря, трудно дать гораздо больше информации, не зная на самом деле варианта использования, с которым сталкивается заказчик.

ruby_newbie 18.12.2018 18:17

Поэтому мне нужно отправить действие из componentWillUnmount, чтобы только решение

Learner 18.12.2018 18:20

Я видел решение, но я не могу сделать это, когда componentWillMount stackoverflow.com/questions/32841757/…, есть ли другой способ

Learner 18.12.2018 18:23

Вариант использования: у меня есть несколько вкладок, на одной из которых вводятся данные, а на следующей вкладке отображается список пользователей. Таким образом, две вкладки - это два разных компонента, использующих реагирующий маршрутизатор, поэтому всякий раз, когда пользователь вводит что-то при регистрации и уходит, не отправив запрос, должен спросить. Поэтому мне нужно вызвать componentWillUnmount. Но после этого, как вы сказали, даже если состояние изменилось, рендеринга не произойдет. Итак, это вариант использования

Learner 19.12.2018 05:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
6
570
0

Другие вопросы по теме