react常用功能和示例

React 是一个用于构建用户界面的 JavaScript 库,它提供了许多功能,以下是其中一些常用功能和示例:

  1. JSX:JSX 允许您在 JavaScript 中编写类似 HTML 的代码,以便更容易地创建 UI 元素。
javascriptCopy code
import React from 'react';

function App() {
  return (
    <div>
      <h1>Hello, World!</h1>
      <p>This is a paragraph.</p>
    </div>
  );
}

export default App;
  1. 组件:组件是 React 应用程序的构建块,您可以使用它们来构建复杂的 UI。
javascriptCopy code
import React from 'react';

function MyComponent(props) {
  return (
    <div>
      <h1>{props.title}</h1>
      <p>{props.text}</p>
    </div>
  );
}

export default MyComponent;
  1. 状态:React 中的状态是一个对象,它描述了组件在任何给定时间点的特定情况。
javascriptCopy code
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  const incrementCount = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={incrementCount}>Click me</button>
    </div>
  );
}

export default Counter;
  1. 生命周期:React 组件具有生命周期方法,这些方法在组件生命周期的不同阶段被调用。
javascriptCopy code
import React, { Component } from 'react';

class MyComponent extends Component {
  constructor(props) {
    super(props);
    this.state = {
      data: []
    };
  }

  componentDidMount() {
    // 在组件挂载后调用
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => this.setState({ data }));
  }

  render() {
    return (
      <ul>
        {this.state.data.map(item => (
          <li key={item.id}>{item.name}</li>
        ))}
      </ul>
    );
  }
}

export default MyComponent;
  1. 路由:React 路由器可以帮助您将应用程序分成多个页面,并根据 URL 呈现不同的内容。
javascriptCopy code
import React from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';

function Home() {
  return <h1>Home</h1>;
}

function About() {
  return <h1>About</h1>;
}

function App() {
  return (
    <Router>
      <nav>
        <ul>
          <li>
            <Link to="/">Home</Link>
          </li>
          <li>
            <Link to="/about">About</Link>
          </li>
        </ul>
      </nav>

      <Route exact path="/" component={Home} />
      <Route path="/about" component={About} />
    </Router>
  );
}

export default App;
  1. Props:Props 是 React 组件之间传递数据的一种方式。通过将属性传递给组件,可以使组件根据数据的不同呈现不同的内容。
javascriptCopy code
import React from 'react';

function Greeting(props) {
  return <h1>Hello, {props.name}!</h1>;
}

function App() {
  return <Greeting name="Alice" />;
}

export default App;
  1. 条件渲染:在 React 中,您可以使用条件语句根据不同的条件渲染不同的内容。
javascriptCopy code
import React from 'react';

function App(props) {
  const isLoggedIn = props.isLoggedIn;
  return (
    <div>
      {isLoggedIn ? <p>Welcome back!</p> : <p>Please log in.</p>}
    </div>
  );
}

export default App;
  1. 表单处理:React 中的表单处理通常涉及将表单中的值存储在组件的状态中,并在表单提交时处理它们。
javascriptCopy code
import React, { useState } from 'react';

function LoginForm() {
  const [username, setUsername] = useState('');
  const [password, setPassword] = useState('');

  const handleSubmit = event => {
    event.preventDefault();
    // 处理表单提交逻辑
  };

  return (
    <form onSubmit={handleSubmit}>
      <label>
        Username:
        <input
          type="text"
          value={username}
          onChange={e => setUsername(e.target.value)}
        />
      </label>
      <label>
        Password:
        <input
          type="password"
          value={password}
          onChange={e => setPassword(e.target.value)}
        />
      </label>
      <button type="submit">Log in</button>
    </form>
  );
}

export default LoginForm;
  1. 组合和继承:在 React 中,您可以通过组合和继承来构建复杂的 UI。通过将多个组件组合在一起,您可以构建复杂的页面,并使其易于管理和维护。
javascriptCopy code
import React from 'react';

function Dialog(props) {
  return (
    <div>
      <h1>{props.title}</h1>
      <div>{props.children}</div>
    </div>
  );
}

function WelcomeDialog() {
  return (
    <Dialog title="Welcome">
      <p>Thank you for using our service!</p>
    </Dialog>
  );
}

export default WelcomeDialog;
  1. Hooks:React Hooks 是 React 16.8 中引入的一项新功能,它们使您可以在函数组件中使用状态和其他 React 功能,而不必使用类组件。
javascriptCopy code
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  const incrementCount = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={incrementCount}>Click me</button>
    </div>
  );
}

export default Counter;
  1. 生命周期方法:React 组件具有生命周期方法,可以在组件的不同阶段执行操作,例如在组件挂载时、更新时或卸载时执行操作。下面是 React 组件的生命周期方法示例:
javascriptCopy code
import React from 'react';

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  componentDidMount() {
    console.log('Component mounted');
  }

  componentDidUpdate() {
    console.log('Component updated');
  }

  componentWillUnmount() {
    console.log('Component unmounted');
  }

  render() {
    return <div>{this.state.count}</div>;
  }
}

export default MyComponent;
  1. React Router:React Router 是一个流行的第三方库,用于管理单页应用程序中的路由。它允许您使用声明性的方式定义路由,并根据 URL 的变化自动更新页面内容。下面是 React Router 的一个基本示例:
javascriptCopy code
import React from 'react';
import { BrowserRouter, Route, Link } from 'react-router-dom';

function Home() {
  return <h1>Home</h1>;
}

function About() {
  return <h1>About</h1>;
}

function App() {
  return (
    <BrowserRouter>
      <div>
        <ul>
          <li>
            <Link to="/">Home</Link>
          </li>
          <li>
            <Link to="/about">About</Link>
          </li>
        </ul>

        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />
      </div>
    </BrowserRouter>
  );
}

export default App;
  1. React Context:React Context 是一种用于在组件之间共享数据的方式。它允许您避免通过多层组件传递 props 的麻烦,而是将数据直接传递给整个组件树。下面是一个使用 React Context 的示例:
javascriptCopy code
import React, { createContext, useContext } from 'react';

const MyContext = createContext('default');

function Child() {
  const value = useContext(MyContext);
  return <div>{value}</div>;
}

function Parent() {
  return <Child />;
}

function App() {
  return (
    <MyContext.Provider value="hello">
      <Parent />
    </MyContext.Provider>
  );
}

export default App;
  1. 动画:React 本身不提供动画的功能,但可以与第三方动画库集成。例如,React Transition Group 是一个流行的库,可以轻松地在 React 应用程序中创建动画。下面是 React Transition Group 的一个示例:
javascriptCopy code
import React, { useState } from 'react';
import { CSSTransition } from 'react-transition-group';
import './styles.css';

function App() {
  const [visible, setVisible] = useState(false);

  return (
    <div>
      <button onClick={() => setVisible(!visible)}>Toggle</button>

      <CSSTransition
        in={visible}
        timeout={500}
        classNames="fade"
        unmountOnExit
      >
        <div>Hello</div>
      </CSSTransition>
    </div>
  );
}

export default App;
  1. Redux:Redux 是一个用于管理应用程序状态的流行第三方库。它使用单一不可变状态树来管理应用程序状态,并提供了一种可预测的方式来处理状态变化。以下是 Redux 的一个基本示例:
phpCopy code
import { createStore } from 'redux';

// 定义 reducer
function counter(state = 0, action) {
  switch (action.type) {
    case 'INCREMENT':
      return state + 1;
    case 'DECREMENT':
      return state - 1;
    default:
      return state;
  }
}

// 创建 store
const store = createStore(counter);

// 订阅 state 变化
store.subscribe(() => console.log(store.getState()));

// 分发 action
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'DECREMENT' });
  1. React Hooks:React Hooks 是 React 16.8 引入的一个新特性,它允许您在不编写 class 组件的情况下使用 state 和其他 React 功能。下面是使用 useState 钩子的一个示例:
javascriptCopy code
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
      <button onClick={() => setCount(count - 1)}>Decrement</button>
    </div>
  );
}

export default Counter;
  1. React Native:React Native 是一个用于构建原生移动应用程序的框架,它使用 React 的组件模型来构建应用程序界面。以下是使用 React Native 的一个示例:
javascriptCopy code
import React, { useState } from 'react';
import { Text, View, TextInput } from 'react-native';

function App() {
  const [text, setText] = useState('');

  return (
    <View>
      <Text>Enter some text:</Text>
      <TextInput value={text} onChangeText={setText} />
      <Text>You entered: {text}</Text>
    </View>
  );
}

export default App;
  1. React Testing Library:React Testing Library 是一个用于测试 React 组件的库。它强调测试应该更接近用户使用组件的方式,而不是关注组件的内部实现细节。以下是使用 React Testing Library 编写的一个基本测试示例:
javascriptCopy code
import React from 'react';
import { render, fireEvent } from '@testing-library/react';
import Counter from './Counter';

test('counter increments and decrements when buttons are clicked', () => {
  const { getByText } = render(<Counter />);
  const incrementButton = getByText('Increment');
  const decrementButton = getByText('Decrement');
  const count = getByText('Count: 0');

  fireEvent.click(incrementButton);
  expect(count).toHaveTextContent('Count: 1');

  fireEvent.click(decrementButton);
  expect(count).toHaveTextContent('Count: 0');
});
  1. Material UI:Material UI 是一个 React 组件库,它提供了许多预先构建好的 UI 组件和样式,可以用于快速构建美观的应用程序界面。以下是使用 Material UI 的一个示例:
javascriptCopy code
import React from 'react';
import Button from '@material-ui/core/Button';

function App() {
  return (
    <div>
      <Button variant="contained" color="primary">
        Click me
      </Button>
    </div>
  );
}

export default App;
  1. Axios:Axios 是一个用于发起 HTTP 请求的库,它支持浏览器和 Node.js。以下是使用 Axios 发起 GET 请求的一个示例:
javascriptCopy code
import React, { useState, useEffect } from 'react';
import axios from 'axios';

function App() {
  const [data, setData] = useState(null);

  useEffect(() => {
    axios.get('https://jsonplaceholder.typicode.com/todos/1')
      .then(response => setData(response.data));
  }, []);

  return (
    <div>
      {data ? <p>{data.title}</p> : <p>Loading...</p>}
    </div>
  );
}

export default App;
  1. React Native:React Native 是一个用于构建原生移动应用程序的库,它允许您使用 React 组件和语法来构建 iOS 和 Android 应用程序。以下是一个使用 React Native 的示例:
javascriptCopy code
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';

function App() {
  return (
    <View style={styles.container}>
      <Text>Hello, world!</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#fff'
  }
});

export default App;
  1. Next.js:Next.js 是一个 React 框架,它提供了许多功能,例如服务器端渲染、静态网站生成、动态导入等,使得构建高性能的 React 应用程序变得更加容易。以下是使用 Next.js 的一个示例:
javascriptCopy code
import Link from 'next/link';

function HomePage() {
  return (
    <div>
      <h1>Welcome to my website</h1>
      <Link href="/about">
        <a>About</a>
      </Link>
    </div>
  );
}

export default HomePage;
  1. Formik:Formik 是一个用于处理表单的库,它简化了表单的处理和验证,并提供了一些方便的功能,例如动态表单字段和表单提交处理等。以下是一个使用 Formik 的示例:
javascriptCopy code
import React from 'react';
import { Formik, Form, Field, ErrorMessage } from 'formik';

function App() {
  return (
    <Formik
      initialValues={{ name: '', email: '' }}
      validate={values => {
        const errors = {};

        if (!values.name) {
          errors.name = 'Required';
        }

        if (!values.email) {
          errors.email = 'Required';
        } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,}$/i.test(values.email)) {
          errors.email = 'Invalid email address';
        }

        return errors;
      }}
      onSubmit={(values, { setSubmitting }) => {
        setTimeout(() => {
          alert(JSON.stringify(values, null, 2));
          setSubmitting(false);
        }, 400);
      }}
    >
      {({ isSubmitting }) => (
        <Form>
          <Field type="text" name="name" />
          <ErrorMessage name="name" />

          <Field type="email" name="email" />
          <ErrorMessage name="email" />

          <button type="submit" disabled={isSubmitting}>Submit</button>
        </Form>
      )}
    </Formik>
  );
}

export default App;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值