ReactJS 教程

ReactJS - 主页 ReactJS - 简介 ReactJS - 路线图 ReactJS - 安装 ReactJS - 功能 ReactJS - 优势和缺点 ReactJS - 架构 ReactJS - 创建 React 应用程序 ReactJS - JSX ReactJS - 组件 ReactJS - 嵌套组件 ReactJS - 使用组件 ReactJS - 集合组件 ReactJS - 样式 ReactJS - 属性 (props) ReactJS - 使用属性创建组件 ReactJS - props 验证 ReactJS - 构造函数 ReactJS - 组件生命周期 ReactJS - 事件管理 ReactJS - 创建事件感知组件 ReactJS - Expense Manager 事件 ReactJS - 状态管理 ReactJS - 状态管理 API ReactJS - 无状态组件 ReactJS - Hooks 进行状态管理 ReactJS - Hooks 的组件生命周期 ReactJS - 布局组件 ReactJS - 分页 ReactJS - Material UI ReactJS - Http 客户端编程 ReactJS - 表单编程 ReactJS - 受控组件 ReactJS - 非受控组件 ReactJS - Formik ReactJS - 条件渲染 ReactJS - 列表 ReactJS - Key 键 ReactJS - 路由 ReactJS - Redux ReactJS - 动画 ReactJS - Bootstrap ReactJS - Map ReactJS - 表格 ReactJS - 使用 Flux 管理状态 ReactJS - 测试 ReactJS - CLI 命令 ReactJS - 构建和部署 ReactJS - 示例

Hooks

ReactJS - Hooks 简介 ReactJS - 使用 useState ReactJS - 使用 useEffect ReactJS - 使用 useContext ReactJS - 使用 useRef ReactJS - 使用 useReducer ReactJS - 使用 useCallback ReactJS - 使用 useMemo ReactJS - 自定义 Hooks

ReactJS 高级

ReactJS - 可访问性 ReactJS - 代码拆分 ReactJS - 上下文 ReactJS - 错误边界 ReactJS - 转发 Refs ReactJS - 片段 ReactJS - 高阶组件 ReactJS - 与其他库集成 ReactJS - 优化性能 ReactJS - Profiler API ReactJS - Portals ReactJS - 不使用 ES6 ECMAScript ReactJS - 不使用 JSX 的 React ReactJS - Reconciliation ReactJS - Refs 和 DOM ReactJS - 渲染道具 ReactJS - 静态类型检查 ReactJS - 严格模式 ReactJS - Web 组件

其他概念

ReactJS - 日期选择器 ReactJS - Helmet ReactJS - 内联样式 ReactJS - PropTypes ReactJS - BrowserRouter ReactJS - DOM ReactJS - 轮播 ReactJS - 图标 ReactJS - 表单组件 ReactJS - 参考 API

ReactJS 有用资源

ReactJS - 快速指南 ReactJS - 备忘录 Axios - 备忘录 ReactJS - 有用资源 ReactJS - 讨论


ReactJS - 静态 defaultProps 属性

React 是一个流行的用户界面开发库。有时在创建 React 应用时,我们可能希望为某些属性设置默认设置。这就是"defaultProps"理念发挥作用的情况。

什么是 defaultProps?

DefaultProps 是 React 的一项功能,允许我们为组件的属性(或 props)提供默认值。当未提供 prop、未定义或缺失 prop 时,将使用这些默认值。需要注意的是,如果 prop 明确设置为 null,则不会应用 defaultProps。

defaultProps 的使用

class Button extends Component {
   static defaultProps = {
      color: 'blue'
   };
   
   render() {
      return <button className={this.props.color}>Click me</button>;
   }
}

在此代码中,我们有一个 Button 组件,它采用"color"属性。如果未提供或未定义"color"属性,则 defaultProps 会介入并默认将"color"属性设置为"blue"。

defaultProps 实际操作示例

如果没有提供"color"属性,则 Button 组件将默认设置为"blue"。

<Button />
{/* The color is "blue" */}

即使我们直接将 'color' prop 设置为 undefined,defaultProps 仍然会生效,为 'color' 提供默认值 'blue'。

<Button color={undefined} />
{/* The color is "blue" */}

如果我们将 'color' prop 更改为 null,defaultProps 将不会覆盖它,并且 'color' 将为 null。

<Button color={null} />
{/* The color is null */}

如果我们为"color"属性指定一个值,它将被使用而不是默认值。

<Button color="red" />
{/* The color is "red" */}

示例

示例 − 按钮组件应用

因此,我们将创建一个 React 应用,其中我们将显示一个蓝色的按钮组件,以显示 defaultProps 的用法。

现在打开项目并使用代码编辑器导航到项目目录中的 src 文件夹。在 App.js 文件中替换以下代码 −

import React, { Component } from 'react';
import './App.css'; // Import the CSS file

class Button extends Component {
   static defaultProps = {
      color: 'blue'
   };   
   render() {
      return <button className={`button ${this.props.color}`}>Click me</button>;
   }
}
class App extends Component {
   render() {
      return (
         <div className="App">
            <Button />
         </div>
      );
   }
}

export default App;

App.css

.button {
   background-color: rgb(119, 163, 208);
   color: white;
   padding: 5px 20px;
   border: 2px;
   margin-top: 25px;
   border-radius: 5px;
   cursor: pointer;
}

.blue {
   background-color: blue;
}

输出

click me button

示例 − 简单计数器应用

在此应用中,我们将显示一个从指定初始值(默认值为 0)开始的计数器。因此,用户可以单击按钮来增加计数器。此应用将向我们展示如何使用静态 defaultProps 为某些属性提供默认值。此应用的代码如下 −

import React, { Component } from 'react';

class Counter extends Component {
   static defaultProps = {
      initialValue: 0,
   };   
   constructor(props) {
      super(props);
      this.state = {
         count: this.props.initialValue,
      };
   }   
   increment = () => {
      this.setState((prevState) => ({ count: prevState.count + 1 }));
   };
   
   render() {
      return (
         <div>
            <h2>Counter App</h2>
            <p>Count: {this.state.count}</p>
            <button onClick={this.increment}>Increment</button>
         </div>
      );
   }
}

export default Counter;

输出

counter app

示例 − 切换开关应用

在此应用中,我们将提供一个可以打开或关闭的切换开关。因此,我们将初始状态设置为打开或关闭(默认为关闭)。用户可以单击按钮来切换开关。因此,此应用的代码如下 −

import React, { Component } from 'react';

class ToggleSwitch extends Component {
   static defaultProps = {
      defaultOn: false,
   };   
   constructor(props) {
      super(props);
      this.state = {
         isOn: this.props.defaultOn,
      };
   }   
   toggle = () => {
      this.setState((prevState) => ({ isOn: !prevState.isOn }));
   };
   
   render() {
      return (
         <div>
            <h2>Toggle Switch App</h2>
            <p>Switch is {this.state.isOn ? 'ON' : 'OFF'}</p>
            <button onClick={this.toggle}>Toggle</button>
         </div>
      );
   }
}

export default ToggleSwitch;

输出

toggle switch app

在上面的输出中,我们可以看到有一个名为 Toggle 的按钮,因此当我们单击它时,消息将根据条件更改。如果消息是 Switch is OFF,则单击按钮后,消息将更改为 Switch is ON。

摘要

defaultProps 是 React 中的一个有用功能,可改进对组件属性默认值的处理。它确保我们的组件即使某些 props 缺失或未定义也能有效运行。我们可以通过定义默认值使代码更简单、更用户友好。

reactjs_reference_api.html