React v-model 难学吗?看看掌握这个框架的实践总结吧!
2023-10-21 14:02:35
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 实战案例
- 使用 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;
- 使用 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 的行为。