Что делает ref и зачем он нужен в iframe?

import React from 'react'

function MyComponent() {
    return (
        <div>
            <p style = {{color: 'red'}}>Testing to see if my component renders!</p>
        </div>
    )
}

export default MyComponent;

Теперь давайте создадим файл CustomIframe.js.

import React, { useState } from 'react'
import { createPortal } from 'react-dom'

const CustomIframe = ({
  children,
  ...props
}) => {
  const [contentRef, setContentRef] = useState(null)

  const mountNode =
    contentRef?.contentWindow?.document?.body

  return (
    <iframe {...props} ref = {setContentRef}>
      {mountNode && createPortal(children, mountNode)}
    </iframe>
  )
}

export default CustomIframe;
  1. Что взамен делает ref ? и зачем это нужно? и зачем ставить setContentRef вместо contentRef в ref = {}?

  2. Кроме этого, почему {... props} присутствует в теге iframe, когда они нигде не используются?

Я пытался найти ref в Интернете, узнал только об хуке useRef, а не ref

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

Ответы 1

Ответ принят как подходящий
  1. setContentRef назначит ссылку на элемент iframe для contentRef, чтобы вы могли получить доступ к собственным методам и свойствам, доступным в iframe, например contentWindow

  2. {...props} распространит все значения реквизита как атрибуты на элемент iframe

что такое ref и зачем нужно передавать ref в теге inframe

Anjali Chauhan 11.12.2022 17:27

если вы хотите получить доступ к нативным методам вашего компонента, например contentWindow, ref прикрепит ссылку на элемент к переменной через ref

Sachila Ranawaka 11.12.2022 17:28

Хорошо, последние 2 вопроса 1) Так как ref = {setContentRef} в iframe, а значение состояния равно null, поэтому мы передаем null в ref, или это похоже на то, что где-то промежуточное значение было обновлено с null до MyComponent 2) Является ли атрибут ref для только iframe или часть JavaScript

Anjali Chauhan 11.12.2022 17:48

Во время редера реакция присвоит переменной значение ref. Ref доступен для каждого элемента HTML. не только фрейм

Sachila Ranawaka 11.12.2022 17:53

Привет, Сачила, так как мы всегда обновляем состояние по функциям в React, но здесь, чтобы обновить contentRef с нуля до тела iframe, почему мы не делаем setContentRef(contentRef?.contentWindow?.document?.body)? еще раз спасибо за ваше терпение

Anjali Chauhan 11.12.2022 19:34

потому что ref делает это внутри, поэтому нам не нужно явно устанавливать его

Sachila Ranawaka 11.12.2022 19:37

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