具有無狀態功能的 Hello World

無狀態元件從功能程式設計中獲得了他們的理念。這意味著:一個函式在給定的內容上完全返回相同的東西。

例如:

const statelessSum = (a, b) => a + b;

let a = 0;
const statefulSum = () => a++;

從上面的例子可以看出,statelessSum 總是會返回給定 a 和 b 的相同值。但是,即使沒有引數,statefulSum 函式也不會返回相同的值。這種型別的函式的行為也稱為副作用。因為,該元件會影響某些事物。

因此,建議更頻繁地使用無狀態元件,因為它們沒有*副作用,*並且總是會建立相同的行為。這就是你希望在應用程式中使用的內容,因為波動狀態是可維護程式的最壞情況。

最基本的反應組分型別是沒有狀態的反應組分。React 元件是其道具的純函式,不需要任何內部狀態管理,可以編寫為簡單的 JavaScript 函式。這些被認為是 Stateless Functional Components 因為它們只是 props 的功能,沒有任何 state 來跟蹤。

這是一個簡單的例子來說明 Stateless Functional Component 的概念:

// In HTML
<div id="element"></div>

// In React
const MyComponent = props => {
    return <h1>Hello, {props.name}!</h1>;
};

ReactDOM.render(<MyComponent name="Arun" />, element);
// Will render <h1>Hello, Arun!</h1>

請注意,此元件所做的全部操作是渲染包含 name 道具的 h1 元素。此元件不跟蹤任何狀態。這是一個 ES6 示例:

import React from 'react'

const HelloWorld = props => (
    <h1>Hello, {props.name}!</h1>
)

HelloWorld.propTypes = {
    name: React.PropTypes.string.isRequired
}

export default HelloWorld

由於這些元件不需要後臺例項來管理狀態,因此 React 有更多優化空間。實現是乾淨的,但到目前為止還沒有實現對無狀態元件的這種優化