簡體   English   中英

在ReactJS中,我的代碼是否有支持實例,因此可以使用引用?

[英]In ReactJS does my code have backing instances and therefore can use refs?

我傾向於通過將JSX的各個部分組裝在一起來編寫ReactJS組件,如下所示。

我閱讀了此頁面https://facebook.github.io/react/docs/more-about-refs.html ,其中顯示“引用可能未附加到無狀態函數,因為該組件沒有后備實例”

我想知道的是,我編寫的代碼是否意味着我正在編寫沒有后備實例的無狀態函數?

還是我的代碼具有后備實例,因此可以使用引用

我希望能夠引用DOM元素,例如:

    <input
      onChange={() = {console.log(e)}
      ref=**some ref callback function**
      value="rabbit"
    />

但是我不知道考慮到我采用的編碼方法,這是否有可能。

例:

    import React, {Component, PropTypes} from 'react'

    export default class Blah extends React.Component {

      constructor(props) {
        super(props)
      }

      makeAnimal = () => {
        let animaltype = 'furry'
        if (animaltype === 'furry') {
          return (
            <input
              onChange={() = {console.log(e)}
              value="rabbit"
            />
          )
        } else {
          return (
            <input
              onChange={() = {console.log(e)}
              value="fish"
            />
          )
        }
      }

      makeForm = () => {
        let section = {}

        section.floob = (
            <input
              onChange={() = {console.log(e)}
              value="floob"
            />
        )

        section.flub = (
            <input
              onChange={() = {console.log(e)}
              value="flub"
            />
        )

        if (true) {
          return (
            <div>
              {section.flub}
            </div>
          )
        } else {
          return (
            <div>
              {section.floob}
              {this.makeAnimal()}
            </div>
          )
        }
      }


      render() {

        let section = {}

        section.extras = (
          <div>
            <h1>
              The heading!
            </h1>


    </div>
    )

    return (
      <div>
        {section.extras}
        {this.makeForm()}
      </div>
    )
  }
}

您是通過類創建組件的,因此它們不是無狀態的。 無狀態組件看起來像:

export default function Blah({ someProp, someOtherProp }) {
    return (
        <div>
            {someProp}
        </div>
    );
}

因此,在您的代碼中,保留引用應該起作用,但是<input>組件是無狀態的,因為它不是react組件,請參見下面的wintvelt答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM