返回

React v-model 难学吗?看看掌握这个框架的实践总结吧!

前端

React v-model 初探

v-model 是 React 中常用的一个指令,用于在表单元素和组件之间建立双向绑定。通过 v-model,表单元素的值可以自动更新组件的状态,而组件的状态也可以自动更新表单元素的值。

v-model 的默认行为是把 value 用作 prop,把 input 用作 event。这意味着,当表单元素的值改变时,组件的 value prop 也会随之改变;而当组件的 value prop 改变时,表单元素的值也会随之改变。

checkbox 和 radio 的 v-model 使用

checkbox 和 radio 是两种常见的表单元素,它们通常用于多选或单选。在 React 中,可以使用 v-model 来绑定 checkbox 和 radio 的值。

对于 checkbox,可以使用 checked 属性和 change 事件。checked 属性表示 checkbox 是否被选中,change 事件则是在 checkbox 的选中状态发生变化时触发。

对于 radio,可以使用 value 属性和 change 事件。value 属性表示 radio 的值,change 事件则是在 radio 的选中状态发生变化时触发。

组件定制

允许一个自定义组件在使用 v-model 时定制 prop 和 event。这使得组件可以根据自己的需要来自定义 v-model 的行为。

例如,可以创建一个组件,它使用 v-model 来绑定一个字符串值。但是,组件希望在内部使用一个数字值。在这种情况下,组件可以定义一个名为 value 的 prop,它接受一个字符串值,并在内部将其转换为一个数字值。

v-model 实战案例

  1. 使用 v-model 实现登录表单
<form>
  <label for="username">用户名:</label>
  <input id="username" v-model="username">

  <label for="password">密码:</label>
  <input id="password" v-model="password" type="password">

  <button type="submit">登录</button>
</form>
import { ref } from 'react';

const Login = () => {
  const username = ref('');
  const password = ref('');

  const handleSubmit = (e) => {
    e.preventDefault();

    // 使用 username 和 password 进行登录操作
  };

  return (
    <form onSubmit={handleSubmit}>
      <label htmlFor="username">用户名:</label>
      <input id="username" v-model={username} />

      <label htmlFor="password">密码:</label>
      <input id="password" v-model={password} type="password" />

      <button type="submit">登录</button>
    </form>
  );
};

export default Login;
  1. 使用 v-model 实现 Todo 列表
<ul>
  {todos.map((todo) => (
    <li key={todo.id}>
      <input type="checkbox" v-model={todo.completed} />
      <label>{todo.text}</label>
    </li>
  ))}
</ul>
import { ref, computed } from 'react';

const TodoList = ({ todos }) => {
  const completedTodos = computed(() => {
    return todos.filter((todo) => todo.completed);
  });

  const handleToggleTodo = (todo) => {
    todo.completed = !todo.completed;
  };

  return (
    <ul>
      {todos.map((todo) => (
        <li key={todo.id}>
          <input type="checkbox" v-model={todo.completed} onChange={() => handleToggleTodo(todo)} />
          <label>{todo.text}</label>
        </li>
      ))}
    </ul>
  );
};

export default TodoList;

总结

v-model 是 React 中一个强大的指令,可以用于在表单元素和组件之间建立双向绑定。通过 v-model,表单元素的值可以自动更新组件的状态,而组件的状态也可以自动更新表单元素的值。

v-model 可以用于绑定各种类型的表单元素,包括 input、select、textarea、checkbox 和 radio。组件也可以使用 v-model 来绑定自己的状态。

在使用 v-model 时,可以根据自己的需要来定制 prop 和 event。这使得组件可以根据自己的需要来自定义 v-model 的行为。