当前位置: 首页 > 知识库问答 >
问题:

前端 - 请问定义方法在组件内和定义在组件外有什么区别呢?还是都可以?

邹海荣
2023-09-10

在写React的时候发现有一个细节,我们可以定义方法在组件外也可以定义在组件内,比如searchPages

import React, { useEffect } from 'react'const searchPages = () => {  }function SearchComp() {  useEffect(() => {  }, [])  return (    <div>SearchComp    </div>  )}export default SearchComp

请问定义在组件内和定义在组件外有什么区别呢?还是都可以?

共有1个答案

陆飞捷
2023-09-10

写在组件内部主要是为了便于通过作用域链访问组件内定义的变量和方法

function TestComponent(){  const [pages, setPages] = useState([]);  useEffect(() => {    fetch("path/to/pages").then(async (res) => {      const { info } = await res.json();      // 这里访问了组件内定义的方法 setPages      setPages(info);    });  },[]);  return <span>xxxx</span>}

上述方法如果要搬到组件外,可以这样写:

const genarateEffectCallback = setPages => () => {  fetch("path/to/pages").then(async (res) => {    const { info } = await res.json();    // 这里的 setPages 由外界传入    setPages(info);  });}function TestComponent(){  const [pages, setPages] = useState([]);  useEffect(genarateEffectCallback(setPages), []);  return <span>xxxx</span>}
 类似资料:
  • 我看到一个react组件的ts文件内容如下: 我有2个问题想要请教一下: 1、在此文件中:这里把添加节点、更新节点、删除节点三个方法放在组件TableList定义 之外的,是否可以放在组件内部呢?放在组件定义之外有什么好处呢? 2、我们看到定义组件是这样定义: <unknown> 在这里有什么用呢?它的作用是什么?如果不加会出现什么问题?

  • 英文原文:http://emberjs.com/guides/components/defining-a-component/ 为了定义一个组件,需要先创建一个名字以components/开始的模板。例如:如果需要定义一个新组建{{blog-post}},需要创建components/blog-post模板。 注意: 组件名必须包含'-'。因此blog-post是一个合法的命名,而post则不是。

  • 本文向大家介绍组件和插件有什么区别?相关面试题,主要包含被问及组件和插件有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 组件 (Component) 是用来构成你的 App 的业务模块,它的目标是 App.vue。 插件 (Plugin) 是用来增强你的技术栈的功能模块,它的目标是 Vue 本身。

  • 我正在学习编写用于JavaFX8和Scene Builder的FXML自定义组件。 我编写了如下所示的FXML文件,但Scene Builder不会打开它,由于出现异常,给出消息“open operation has Failed”:

  • 问题内容: 我可以在类定义之外创建,甚至可以在另一个模块中创建吗? 问题答案: 是。您可以在类外部定义函数,然后在类主体中将其用作方法: 您也可以在定义一个函数后将其添加到类中: 您可以根据需要在不同的模块中定义函数和类,但是我建议不要在一个模块中定义该类,然后再将其导入另一个模块中并向其中动态添加方法(如第二个示例),因为那样的话d根据是否已导入另一个模块,其行为与类具有令人惊讶的不同。 我要指

  • 本文向大家介绍自定义组件时render是可选的吗?为什么?相关面试题,主要包含被问及自定义组件时render是可选的吗?为什么?时的应答技巧和注意事项,需要的朋友参考一下 根据文档描述,class组件的render函数是必选的:The render() method is the only required method in a class component. 对应文档: https://re