Two-Way Data Binding


When data binding is two-way => User inputs
In contrary: One-Way Data Binding

React example

import React, { useState } from 'react';

function App() {
  const [val, setVal] = useState('');

  const handleChange = (event) => {
    setVal(event.target.value);
  };

  return (
    <div>
      Enter the value: 
      <input 
        type="text" 
        value={val}
        onChange={handleChange}
      />
      <br />
      Entered value is: {val}
    </div>
  );
}

Angular example

import { Component } from '@angular/core'; 
 
 @Component({ 
   selector: 'app-example', 
   template: ` 
               Enter the value  : <input [(ngModel)] ='val'> 
               <br> 
                Entered value is:  {{val}} 
             ` 
}) 
export class AppComponent { 
   val: string = ''; 
}

Vue example

<script setup>
import { ref } from 'vue'

const val = ref('')
</script>

<template>
  <div>
    Enter the value: <input v-model="val" />
    <br />
    Entered value is: {{ val }}
  </div>
</template>

Why is it different?

React follows the “Controlled Component” pattern. This means you link the value to a state and have to update the state using an event handler.