📅  最后修改于: 2020-12-08 06:05:34             🧑  作者: Mango
在上一章中,我们向您展示了如何使用可变状态。在本章中,我们将向您展示如何结合状态和道具。
演示组件应该通过传递道具来获取所有数据。仅容器组件应具有state 。
现在,我们将了解什么是容器组件以及它是如何工作的。
现在,我们将更新容器组件。该组件将处理状态并将道具传递给呈现组件。
容器组件仅用于处理状态。与视图(样式等)有关的所有功能都将在呈现组件中处理。
如果要使用上一章中的示例,则需要从render函数删除Text元素,因为该元素用于向用户显示文本。这应该在表示组件内部。
让我们在下面给出的示例中查看代码。我们将导入PresentationalComponent并将其传递给render函数。
导入PresentationalComponent并将其传递给render函数,我们需要传递道具。我们将通过在
App.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import PresentationalComponent from './PresentationalComponent'
export default class App extends React.Component {
state = {
myState: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, used do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.'
}
updateState = () => {
this.setState({ myState: 'The state is updated' })
}
render() {
return (
);
}
}
现在,我们将了解什么是表示组件以及它是如何工作的。
呈现组件应仅用于向用户呈现视图。这些组件没有状态。他们接收所有数据并作为道具。
最佳实践是使用尽可能多的演示组件。
正如我们在上一章中提到的,我们将EC6函数语法用于表示组件。
我们的组件将接收道具,返回视图元素,使用{props.myText}显示文本,并在用户单击文本时调用{props.deleteText}函数。
PresentationalComponent.js
import React, { Component } from 'react'
import { Text, View } from 'react-native'
const PresentationalComponent = (props) => {
return (
{props.myState}
)
}
export default PresentationalComponent
现在,我们具有与“状态”一章中相同的功能。唯一的区别是我们将代码重构为容器和表示组件。
您可以运行该应用程序并查看以下屏幕快照中的文本。
如果单击文本,它将从屏幕上删除。