Есть ли способ в React преобразовать компонент в HTML, который не является его начальным состоянием?

#javascript #reactjs

Вопрос:

На данный момент у меня есть следующая переменная, которая отображает начальное состояние, которое загружается…. Это не то , чего я хочу, я хочу получить окончательный отрисованный html-код компонента после загрузки.

Переменная белое пусть popup_content = ReactDOMServer.renderToString();

Компонент, начальное состояние которого мне не нужно, но конечное состояние в виде html.

 function PopupBetaContent(props) {

  const id = props.id;
  const omm = props.outdoor_map_marker;
  const [popup_content, setPopupContent] = useState(null);
  


  useEffect(() => {
    
    axios
      .get(process.env.NEXT_API.concat('/',id), config)
      .then(res => {
        const popup_result = res.data;
        const status = res.status;

        if (status === 200) {
          if (popup_result !== null) {
            setPopupContent(popup_result);
          } else {
            location.replace('/500');
          }

        } else {
          location.replace('/500');
        }

      })
      .catch(err => {
        location.replace('/500');
      });

  }, [id]);


  if ((popup_content !== null) amp;amp; (loading !== false)) {

    return (
      <>

        <div>
          {popup_content.name}

        </div>
    );
  } else {
    return <>loading....</>;
  }

}

export default PopupContent;
 

Ответ №1:

Вы можете вернуться null , чтобы ничего не отображать, вместо текста «загрузка…».

Предотвращение рендеринга компонента

В редких случаях вы можете захотеть, чтобы компонент скрывал себя, даже если он был отрисован другим компонентом. Чтобы сделать это, вернитесь null вместо вывода рендеринга.

 return (popup_content !== null amp;amp; !loading)
  ? (
    <div>
      {popup_content.name}
    </div>
  )
  : null;