英语Stateful example怎么翻译?

快到2019年底了,您认为您可能终于可以开始学习ReactJS了。 您会听说它已成为最受欢迎的前端JavaScript框架。 您坐在计算机旁,可以试一试了。 首先,您可能会直接进入Facebook的官方React教程。 在那之后,也许还有另一本关于媒体的教程。 您在这里和那里做一些阅读,如果您像我一样,最终会很困惑。 您会听到诸如“ props”,“ state”,“

这听起来像你? 因为这正是我开始学习React时的感受。 我要做的只是建立一个简单的React应用,我感到非常困惑。 我以为React的学习曲线比较困难,我感到不知所措。

我很快意识到React很容易学习,但是我学习的方式却很困难。 问题是我不知道如何学习。 首先,我对前端开发领域还比较陌生,我不知道自己在做什么。 我对HTML有点熟悉,只使用过几次JavaScript。 那当然没有帮助。 在React之前,我应该花一些时间来学习一些技术和信息,这会大大降低学习曲线。

在开始编写一行React代码之前,这是我希望知道的:

首先,让我们确定基础知识。 在开始研究React之前,您可能应该至少对以下每个方面有一点经验:

如果您熟悉以上所有内容,那么学习React对您来说将变得容易得多。 React在JavaScript和HTML方面非常重要。

React是Facebook开发团队于2013年构建JavaScript库。 React希望使用户界面更具模块化(或可重用)并且易于维护。 根据React网站的说法,它用于“构建管理其自身状态的封装组件,然后对其进行组合以构成复杂的UI。”

React有4个想法,这些想法是开始学习React的关键。

React应用程序具有基于组件的架构。 从概念上讲,组件更像JavaScript函数。它们接受输入(称为“ props”)并返回描述应该在屏幕上显示的React元素。 可能是标题,作者姓名,发布日期,一些文本,一些照片(如按钮,共享按钮等)。如果您在React中构建此博客,则每个这些极有可能是一个组成部分。

如果为共享按钮创建组件,则可以重复使用该组件来构建其他共享按钮,或者在多种不同类型的文章中重复使用它。 这就是React的想法。 您正在构建组件,然后可以使用这些组件并对其进行复用以构建更大的组件。

道具是财产的简称。 属性是您如何从父组件向子组件单向传递信息。 我喜欢将它们视为属性或参数,因为它在概念上类似于将参数传递给函数,并且在语法上类似于HTML属性。 查看先前使用的示例。 如果这是一个React组件,那么props就是您要传递的“ src”,“ alt”,“ height”和“ width”。 您还可以传递回调函数以供孩子执行,例如“ onClick”。

许多React组件将是有状态的组件。 状态就是听起来的样子。 这是组件的内部状态。 想一想网页上的复选框。 可以选中或取消选中它。 当用户单击复选框时,它将选中该复选框(如果未选中),而当用户再次单击时,它将取消选中该复选框。 该复选框是有状态组件的示例。 在此示例中,复选框的内部状态将是一个布尔值,该布尔值将被选中为true或被选中为false。

虽然许多组件都具有状态,但有些组件是无状态的。 仅仅因为许多组件都具有状态并不意味着每个组件都必须是有状态的。 有时,从组件中省略状态是有意义的。 想想图像html标签。

如果此图像标签将是无状态组件的示例。 您正在传递参数,但是image标签本身没有内部状态,需要它自己进行管理。

如果您对React组件生命周期有一个基本的了解,那么React就会更容易理解。 React生命周期描述了组件何时以及如何在DOM中安装,渲染,更新和卸载。 React具有生命周期挂钩(React组件方法),可帮助您管理状态,道具和使用生命周期流程。

React组件的生命周期分为三类 -安装,更新和卸载。

  1. render ()是最常用的生命周期方法。

注意 :您可以阅读更多有关React生命周期的

步骤1:前往终端,然后输入

这将创建一个名为app-name的React应用程序模板。

步骤2:您需要导航到该应用程序的目录,然后在浏览器中查看它,如下所示:

如果以上操作成功,您的浏览器将打开URL到localhost:3000 。 这是浏览器中的输出

现在,让我们创建一个简单的Hello World! 该项目的应用程序。

在您的项目目录中,转到src/index.js并替换文件index.js的内容,如下所示:

  • 第一个参数( 也称为 element )指定要显示的元素,例如h1p等,依此类推。

  • 第二个参数( 也称为 container )指定显示的元素。 按照惯例,它是id' root

所有我们在指定元素的element参数将内显示div有指定的元素idroot

注意: ReactDOM.render方法的第一个参数 .ie中不能包含双亲元素。

相反,您可以像下面的图片那样做,

我们可以指定一个父元素来在页面上显示2个子h1元素。

让我们以html代码为例:

render方法中放置这么多元素是不可行的。 实施模块化是一个好习惯。

例如,让我们重写Hello World的功能! 应用程式。

注意:请始终记住 在元素上 使用 return ,否则会抛出错误

使用render方法中的函数

如您所见,我们可以将函数编写为JSX标签。

  • 您的功能应以大写字母开头。

同样在这里,我们不能有多个父元素。 像以前一样,我们将使用一个父元素和两个子元素。

在现实生活的项目中,通常的做法是将功能组件放在单独的文件中,因为这样可以使程序更具模块化。

假设您的功能组件过于复杂。 作为开发人员,您想将组件移动到另一个文件中,以便可以在您的主文件中使用它。 因此,这使您的程序模块化。 此外,模块化还使您的代码看起来更整洁。

首先,在一个单独的文件中创建一个功能组件。 然后,我们将其导出如下:

创建一个名为MyApp.js的新文件, MyApp.js如下所示编写代码:

  • Line 1 :导入react模块以在我们的代码中使用JSX标签

现在我们可以像下面这样在index.js文件中使用它:

使用位于不同文件中的组件

  • Line 3 :我们将使用import关键字来使用MyApp组件。 始终记住使用相对路径来指定模块 。 第一方模块(例如react不需要相对路径。

有时,即使在函数内编写HTML标签也变得太复杂了。 您无法在函数中编写太多行代码,因为看起来似乎不可读。

您可以根据需要嵌套尽可能多的功能组件

在第二个功能组件中使用

例如,让我们在一个单独的文件中定义一个页脚元素,然后使用它。

然后在App.js使用它:

  • 定义第二个组件App.js并导出

希望这个快速的概述可以帮助您轻松进入React的世界,并为您的初始旅程提供一些指导。

学习愉快! 待在家里,保持安全。

我们根据此数据(“Shakespear”)中的给定字符序列训练一个模型,让它预测序列的下一个字符(“e”)。通过重复调用该模型,可以生成更长的文本序列。

首先,我们来看一下文本内容。

在训练之前,我们需要将字符串映射到数字表示值。创建两个对照表:一个用于将字符映射到数字,另一个用于将数字映射到字符。

现在,每个字符都有一个对应的整数表示值。请注意,我们按从 0 到 len(unique) 的索引映射字符。

根据给定的字符或字符序列预测下一个字符最有可能是什么?这是我们要训练模型去执行的任务。模型的输入将是字符序列,而我们要训练模型去预测输出,即每一个时间步的下一个字符。

由于 RNN 会依赖之前看到的元素来维持内部状态,那么根据目前为止已计算过的所有字符,下一个字符是什么?

将文本划分为训练样本和训练目标。每个训练样本都包含从文本中选取的 seq_length 个字符。

相应的目标也包含相同长度的文本,但是将所选的字符序列向右顺移一个字符。

将文本拆分成文本块,每个块的长度为 seq_length+1 个字符。例如,假设 seq_length 为 4,我们的文本为“Hello”,则可以将“Hell”创建为训练样本,将“ello”创建为目标。

批处理方法可以让我们轻松地将这些单个字符转换为所需大小的序列。

对于每个序列,复制并移动它以创建输入文本和目标文本,方法是使用 map 方法将简单函数应用于每个批处理:

打印第一个样本输入和目标值:

这些向量的每个索引均作为一个时间步来处理。对于时间步 0 的输入,我们收到了映射到字符 “F” 的索引,并尝试预测 “i” 的索引作为下一个字符。在下一个时间步,执行相同的操作,但除了当前字符外,RNN 还要考虑上一步的信息。

我们使用 tf.data 将文本拆分为可管理的序列。但在将这些数据馈送到模型中之前,我们需要对数据进行重排,并将其打包成批。

使用tf.keras.Sequential来定义模型。对于这个简单的例子,我们可以使用三个层来定义模型:

  • tf.keras.layers.Embedding:嵌入层(输入层)。一个可训练的对照表,它会将每个字符的数字映射到具有 embedding_dim 个维度的高维度向量;

对于每个字符,模型查找嵌入,以嵌入作为输入一次运行GRU,并应用密集层生成预测下一个字符的对数可能性的logits:

现在运行模型以查看它的行为符合预期,首先检查输出的形状:

在上面的示例中,输入的序列长度为 100 ,但模型可以在任何长度的输入上运行:

为了从模型中获得实际预测,我们需要从输出分布中进行采样,以获得实际的字符索引。此分布由字符词汇表上的logits定义。

注意:从这个分布中进行_sample_(采样)非常重要,因为获取分布的_argmax_可以轻松地将模型卡在循环中。

尝试批处理中的第一个样本:

这使我们在每个时间步都预测下一个字符索引:

解码这些以查看此未经训练的模型预测的文本:

我要回帖

更多关于 complement翻译 的文章