详细介绍了React中要使用的文件、其用途以及组件的实现

一边学习React的基础知识,一边创建Todo应用。

首先,我们要创建React的模板。
在终端中(如果是Windows系统,则是命令提示符)输入以下内容。

npx create-react-app react-tutorial
cd react-tutorial
code .

首先,在第一行开始,我们要创建一个React的模板。在此过程中,最好在整理项目的目录下进行操作。
第一行的最后一部分 “react-tutorial” 是项目将要创建的目录名称。因此,可以自由决定一个名字。
然后,转到创建的目录,并在该层次结构下打开代码编辑器。

在创建的目录中查看index.html的描述。
通过修改简单结构中head标签的标题元素,可以更改Web页面的标题。

body标签下的div元素中有一个id为root的属性,它非常重要。稍后将对此进行解释。

而且,src(源码)/ App.js中的App函数部分是在终端上执行的Web页面的界面。

在实际中,可以在终端上进行。

npm start

输入“と”,会显示如下所示的App.js内容。

Untitled (20).png
function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

由于不需要,删除React标志的图像、App.js文件中App函数的描述和index.js文件中关于“reportWebVitals”的描述。

顺便提一下,关于”reportWebVitals”的描述可能是指功能用于收集网页加载时的指标。
需要一些时间来学会使用。

我们得到的结果如下所示。

src/App.js 可以改为以下的中文表达:

主要代码文件/App.js

import './App.css';

function App() {
  return <div className="App"></div>;
}

export default App;

src/index.js 的中文释义是什么?

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

简要解释一下,在index.js中,我们获取了index.html中id为”root”的div标签,并对其进行渲染操作。
在这里,我们只渲染了下面三个元素中的一个作为有意义的元素。

  <React.StrictMode>
  <App />
  </React.StrictMode>

顺便提一下,渲染的意思是指根据脚本等抽象数据集合进行一定的处理,将内容绘制到浏览器页面等上面。

在这种情况下,”App”是在App.js中定义的一个函数,并进行渲染。

所以,被嵌套在App中的React.StrictMode是一种严格模式,当发现代码中存在弱点或出现问题时,会抛出错误以提醒。虽然可以不加此模式进行执行,但在应用开发中基本上最好保留该模式。

在App.js文件中添加”Hello React”的代码,并将其显示在浏览器中。

import './App.css';

function App() {
  return <div className="App">Hello React</div>;
}

export default App;

标签中写下了“Hello React”的内容。

Untitled (21).png

为什么会变成居中呢?原因是因为App.css生效了。通过修改其中的描述可以改变显示的内容。

此外,React还内置了热重载功能,只要有任何更改,它就会自动地反映这些更改。

React成为开发的基础,取决于组件。

import './App.css';

function App() {
  return (
  <div className="App">
    <TodoList/>
  </div>
  );
}

export default App;

在App.js文件中,我们创建了一个名为“TodoList”的组件选项卡,将其放置在div标签内。然而,目前还没有定义“TodoList”,因此会返回一个错误。

Untitled (22).png

为了实现组件,创建一个名为“TodoList.jsx”的文件在src目录中。
如果使用VScode,可以使用下方列出的扩展功能来更方便地创建组件。

Untitled (23).png

安装这个扩展,然后在”TodoList.jsx”文件中输入”rafce”并按下转换按钮,它会自动创建组件的框架。

import React from 'react'

const TodoList = () => {
  return (
    <div>TodoList</div>
  )
}

export default TodoList
const TodoList = () => {
  return (
    <div>TodoList</div>
  )
}

这部分是一个组件,当在App.js中调用””时,会返回并显示这段代码。

重要な事項は、”TodoList.jsx”の記述の末尾に”export default TodoList”と記述し、他のいかなるファイルからでも利用できるようにエクスポートする必要があります。逆に、コンポーネントを使用する側は、コードの一番上にインポートの記述を行う必要があります。App.jsで利用するためには、この手順を実行する必要があります。

import TodoList from './TodoList';

只需输入这个,之前的错误就会被解决,”会显示出来。

Untitled (24).png

通过将组件分开,可以将角色添加到选项卡的名称中,使其更易读。此外,每个组件都可以单独创建、管理和修改,因此在工作分配和组件级更改方面非常方便,这在开发过程中非常有用。

相反地,共享变量会变得复杂,因此增加过多的组件是不好的。

开始逐步实现用于创建待办事项应用的功能。

在App.js文件中,

import './App.css';
import TodoList from './TodoList';

function App() {
  return (
  <>
    <TodoList/>
    <input type="text" />
    <button>タスクを追加</button>
    <button>完了したタスクの削除</button>
    <div>残りのタスク:0</div>
  </>
  );
}

export default App;

以以下方式添加。
此外,由于return下方是用JSX编写的,因此无法并列化顶层元素。
因此,如果希望并列化,需要用空标签(React.Fragment)将其括起来进行描述。

为了管理任务,我将使用名为useState()的功能。这是React Hooks的一部分,但我不太了解详细情况,所以接下来会进行调查并做总结。只是粗略地查了一下感觉可能会受伤,所以先不查了。

要使用这个,必须在第一行中导入”useState”。

import React, { useState } from "react";

useState()用于管理和监视变量。
将变量命名为”todos”,并将任务作为元素逐步添加到其中,并存储具有名称(name)、ID(id)、以及是否已完成(completed)等属性的对象。

只有当使用useState()时,在”todos”列表中添加新任务并且变量发生更改时才会进行重新渲染。

然后,”setTodos”用于添加元素到”todos”等情况时启动并重新定义。

const [todos, setTodos] = useState([]);

另外,在名为“todos”的变量数据中,想要在组件中按照”TodoList”来处理。
在那时,在”TodoList”标记内传递数据。我们在左边将这个已命名为todos的变量叫做props。
通过以下描述,意味着请将名为todos的这个变量传递到该组件中。在右边,请输入你想传递的变量名称即可。

<TodoList todos={todos} />

并且,要在TodoList组件中接收props,可以在组件内的第一个括号()内写上想要的props名称(例如,props)。然后,在想要使用该变量的地方,使用”{props.todos}”,即可使用该变量中存储的值。

通过使用大括号来描述,可以用JavaScript来编写JSX。

import React from 'react'

const TodoList = (props) => {
  return (
    <div>{props.todos}</div>
  )
}

export default TodoList

在 App.js 中的 useState() 中指定默认值。将 “[“待办事项1”, “待办事项2″]” 添加为列表并显示在浏览器中。

import React, { useState } from "react";
import TodoList from './TodoList';

function App() {
  const [todos, setTodos] = useState(["Todo1", "Todo2"]);

  return (
  <>
    <TodoList todos={todos} />
    <input type="text" />
    <button>タスクを追加</button>
    <button>完了したタスクの削除</button>
    <div>残りのタスク:0</div>
  </>
  );
}

export default App;
Untitled (25).png

而一般来说,通常使用花括号将{待办事项}传递,并进行使用。这样一来,描述更简洁,更容易理解。

import React from 'react'

const TodoList = ({ todos }) => {
  return (
    <div>{todos}</div>
  )
}

export default TodoList

“TodoList”组件将添加的”Todos”存储为一个列表。换句话说,它是一个组件,用于存储多个”Todo”组件。

因此,需要逐个取出存储在”todos”中的任务,并进行显示。为此,我们将使用map函数来取出”todos”的每个元素,并编写Todo组件。

return todos.map((todo) => (
    <Todo todo={todo}/>
  ));

通过在”TodoList.jsx”文件的返回值中进行类似的描述,可以逐个提取元素,每次启动一个名为”Todo”的组件。同时也要设置props。

然后,在src目录下创建一个名为Todo.jsx的文件,并编写”rafce”以创建一个组件的模板。

在”TodoList.jsx”文件中,导入Todo组件并将接收到的”todo”内容显示出来。

src/todo.jsx 源文件

import React from 'react'

const Todo = ({ todo }) => {
  return (
    <div>{todo}</div>
  )
}

export default Todo

src/TodoList.jsx 可以将其汉译为 “清单.jsx”。

import React from 'react';
import Todo from "./Todo";

const TodoList = ({ todos }) => {
  return todos.map((todo) => (
    <Todo todo={todo}/>
  ));
}

export default TodoList

通过这样做,在浏览器上会得到如下的显示。

Untitled (26).png

由于内容稍微多了一点,所以后半部分明天更新。

bannerAds