首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在render函数中访问属性

如何在render函数中访问属性
EN

Stack Overflow用户
提问于 2018-10-25 00:42:40
回答 2查看 2.5K关注 0票数 1

我有以下代码

代码语言:javascript
复制
class Iframe extends Component {
  constructor (props) {
    super()
    this.state = {
      iFrameHeight: '0px',
    }
    this.iFrameUrl = props.url
  }

我想要访问渲染函数中的属性,如下所示:

代码语言:javascript
复制
render (props) {
  return (
    <iframe
      style={{width: '100%', height: this.state.iFrameHeight, overflow: 'visible'}}
      onLoad={() => {
        const obj = ReactDOM.findDOMNode(this)
        this.setState({
          'iFrameHeight': obj.contentWindow.document.body.scrollHeight + 'px'
        })
      }}
      ref='iframe'
      src={props.url}
      width='100%'
      scrolling='no'
      frameBorder='0'
      sandbox='allow-same-origin allow-scripts'
    />
  )
}

我正在从道具中获取iframe的src URL。在render的返回方法中访问props的正确方式是什么?

EN

回答 2

Stack Overflow用户

发布于 2018-10-25 01:09:31

如果您在构造函数中接受props,则还需要将其传递给父组件。(在本例中为React.Component)

代码语言:javascript
复制
class Iframe extends Component {
   constructor (props) {
   super(props);
   ...
 }

一旦准备就绪,您就可以随时在任何组件函数/生命周期挂钩/呈现方法中引用props,只需简单地使用

this.props.url //any key in your prop

所以现在,在构造函数中使用this.props.url

代码语言:javascript
复制
constructor (props) {
   super(props);
   this.state = {
     iFrameHeight: '0px',
   }
   this.iFrameUrl = this.props.url    
}

如果你想修改url,那么在render方法中使用this.frameUrl,否则你可以在render方法中直接使用this.props.url

票数 1
EN

Stack Overflow用户

发布于 2018-10-25 00:53:48

您只需使用this.props,如果您想在JSX中使用它,请确保用大括号将其括起来。

代码语言:javascript
复制
 render () {
      console.log(this.props) // this is how to use props inside render method
      return (
        <iframe
          style={{width: '100%', height: this.state.iFrameHeight, overflow: 'visible'}}
          onLoad={() => {
            const obj = ReactDOM.findDOMNode(this)
            this.setState({
              'iFrameHeight': obj.contentWindow.document.body.scrollHeight + 'px'
            })
          }}
          ref='iframe'
          src={props.url}
          width='100%'
          scrolling='no'
          frameBorder='0'
          sandbox='allow-same-origin allow-scripts'
        />
      )
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52974146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档