当前位置: 首页 > 面试题库 >

reactjs中的render和class内部的函数

毛缪文
2023-03-14
问题内容

我正在尝试学习reactjs并且有一些不确定性。我指的是react
DOCS和其他一些教程,我看到函数是在render函数和类内部编写的。我们应该在render函数内部做些什么反应?

第一种方式

class App extends Component {

    test(user) {

        return user.firstName;
    }

    render() {

        const user = {
            firstName: 'Harper',
            lastName: 'Perez'
        };

        return (

            <div>

                <h1>{this.test(user)}</h1>

            </div>
        )
    }
}

第二路

class App extends Component {

       render() {

        const user = {
            firstName: 'Harper',
            lastName: 'Perez'
        };

        function test(user) {

            return user.firstName;
        }

        return (

            <div>

                <h1>{test(user)}</h1>

            </div>

        )

    }
}

这两种方法都有效。但是我想知道什么是最好的方法吗?最重要的是,我想知道我可以在render函数中做什么事情。

谢谢。


问题答案:

我认为这最终是您的选择,但我个人更喜欢仅将功能放在render中,这些功能专门处理渲染组件和/或JSX(即,在prop上进行映射,根据prop来有条件地加载适当组件的switch语句等)。
)。如果该函数背后的逻辑很沉重,我将使其不渲染。

这是一个例子。假设您的组件中有一个“用户”道具,该道具应该显示用户列表。您可能具有以下类型的事物的render函数:

render(){



  // An array of user objects & a status string.

  const { users, status } = this.props;



  // Map users array to render your children:

  const renderUserList = () => {

    return users.map(user => {

      return <div>{ user.firstName }</div>;

    });

  };



  // Conditionally load a component:

  const renderStatus = () => {

    let component = '';

    switch(status){

      case 'loading':

        component = <Component1 />

        break;

      case 'error':

        component = <Component2 />

        break;

      case 'success':

        component = <Component3 />

        break;

      default:

        break;

    }



    return component;

  }



  // render() return:

  return(

    <div>

      <div className="status">

        { renderStatus() }

      </div>

      <div className="user-list">

        { renderUserList() }

      </div>

    </div>

  );

}

但是,如果您有一个需要以某种方式操纵有关用户数据的函数,则最好将其放在render之外的函数中。



 类似资料:
  • 我正在努力学习reactjs,我有一些不确定性。我参考了react文档和一些其他教程,我看到函数是在渲染函数和类中编写的。我们应该在React的render函数中做什么? 第1路 第二路 谢了。

  • 我刚刚开始学习React和JavaScript。在我阅读了留档和教程之后,我看了一下示例项目,并试图整理我还没有得到的内容。 然后我看到有一些函数是在函数内部定义的,还有一些函数是在函数外部定义的。 例如,在之外: 和内部render()。。。 为什么它们看起来如此不同,为什么你想在内部和外部有一些函数? 编辑: 之外的函数的另一个示例: EDIT2:在另一个线程中,有人回答说,如果函数背后的逻辑

  • 问题内容: 这是我之前的问题的后续工作,但是如果我在其中的映射如何在React的render()方法中调用函数。 示例(此代码在extended的类内): 无论我尝试什么,我总是最终得到“ this.getItemInfo()不是一个函数”。 我在函数内部进行了on操作,实际上是在引用Window对象,但是我似乎找不到改变它的方法。 我累了: 定义为函数getItemInfo(){..} 作为第二

  • 我试图运行一个简单的mapdb示例,但出现了以下错误: 我的班级: 我的pomx.xml 我跑得很快-

  • 我们如何在setTimeout中使用。我在构造函数中声明了一个属性。我使用了inside它会抛出一个类似于 我试了很多,但不知道如何解决这个问题。为什么错了?请帮我解决这个问题。。

  • 基础 Vue 推荐使用在绝大多数情况下使用 template 来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template 更接近编译器。 <h1> <a name="hello-world" href="#hello-world"> Hello world! </a> </h1> 在 HTML 层