Как я могу автоматически обновить состояние этой формы без необходимости обновления страницы? Стек МЕРНА

#javascript #reactjs #react-redux #mern

Вопрос:

Я создал форму для отправки пользователем и последующего обновления. Пользователь переходит к форме со своей панели мониторинга, и форма должна загрузить значения, хранящиеся в базе данных. Проблема, с которой я сталкиваюсь, заключается в том, что, как только пользователь отправляет обновление в форму, он затем перемещает их обратно на свою панель мониторинга, а затем, если они немедленно перейдут по ссылке, чтобы вернуться к форме, чтобы обновить ее снова, она не загружает то, что они только что обновили (она загрузит обновление, если пользователь обновит страницу). Я бы хотел, чтобы он обновлялся автоматически, без необходимости обновления страницы пользователем. Есть какие-нибудь мысли?

Вот родительский компонент формы, в который загружаются данные пользователя (параметр пользователя поступает из основного компонента приложения).:

 const HealthHistory = ({ user }) =gt; {  const dispatch = useDispatch();   useEffect(() =gt; {  if (user) {  const userId = user.result._id;  dispatch(getUser(userId));  }  }, [dispatch, user]);   const userState = useSelector((state) =gt; state?.usersReducer?.user?.data);   return !userState ? (  lt;divgt;Loading...lt;/divgt;  ) : (  lt;div className='container'gt;  lt;HHForm user={user} userState={userState} /gt;  lt;/divgt;  ); };  

И вот как загружается компонент формы (я опустил много полей, просто чтобы код был кратким в этом посте):

 const HHForm = ({ user, userState }) =gt; {  const dispatch = useDispatch();  const history = useHistory();   const [occupation, setOccupation] = useState('');  const [phoneNumber, setPhoneNumber] = useState('');   const formData = {  occupation,  phoneNumber,  };   useEffect(() =gt; {  setOccupation(  userState?.healthHistory[0]?.occupation  ? userState?.healthHistory[0]?.occupation  : ''  );  setPhoneNumber(  userState?.healthHistory[0]?.phoneNumber  ? userState?.healthHistory[0]?.phoneNumber  : ''  );  }, []);   const handleSubmit = (e) =gt; {  e.preventDefault();  if (user) {  dispatch(submitHH(formData));  clear();  history.push('/dashboard');  } else {  clear();  history.push('/dashboard');  }  };   const clear = () =gt; {  setOccupation('');  setPhoneNumber('');  };   return (  lt;form className='ui form' onSubmit={handleSubmit}gt;  lt;divgt;  lt;labelgt;Occupationlt;/labelgt;  lt;input  name='occupation'  type='text'  value={occupation}  onChange={(e) =gt; setOccupation(e.target.value)}  /gt;  lt;/divgt;  lt;divgt;  lt;labelgt;Phone numberlt;/labelgt;  lt;input  name='phoneNumber'  type='text'  value={phoneNumber}  onChange={(e) =gt; setPhoneNumber(e.target.value)}  /gt;  lt;/divgt;  lt;button type='submit' className='ui button'gt;  Submit  lt;/buttongt;  lt;/formgt;  ); };