
const proxy = new Proxy(target, handlers);const proxy = new Proxy({age: 21}, {
get(target, property) {
console.log(`Lecture de target.${property}`);
return target[property];
}
});
console.log(proxy.age)Lecture de target.age
21const proxy = new Proxy({age: 21}, {
set(target, property, value) {
target[property] = value + 1;
}
});
proxy.age = 41;
console.log(proxy.age);<body>
<p>Votre age :</p>
<input id="ageInput" type="text">
<h2 id="yourAge"></h2>
<h2 id="plusTenYears"></h2>
<h2 id="plusTwentyYears"></h2>
<h2 id="plusThirtyYears"></h2>
</body>window.ReactiveSystem = {
state: new Proxy({ age: 0 }, {})
}window.ReactiveSystem.onChangeHandler = new Map();window.ReactiveSystem.addOnChangeHandler = (property, handler) => {
window.ReactiveSystem.onChangeHandler.set(property, handler);
}window.ReactiveSystem.runOnChangeHandler = (property) => {
const handler = window.ReactiveSystem.onChangeHandler.get(property);
handler?.(window.ReactiveSystem.state[property]);
}window.ReactiveSystem.addState = (property, state, onChangeHandler) => {
window.ReactiveSystem.state[property] = state;
window.ReactiveSystem.addOnChangeHandler(property, onChangeHandler);
// on lance directement le onChange après l'ajout de la propriété pour que le premier rendu soit correct
window.ReactiveSystem.runOnChangeHandler(name);
}window.ReactiveSystem.state = newProxy({}, {
set(target,propertyName,value) {
target[propertyName] = value;
window.ReactiveSystem.runOnChangeHandler(propertyName);
},
});const renderAgeThings = (value) => {
const rawAge = +value;
const age = isNaN(rawAge) ? 0 : rawAge;
const agePlusTen = `Dans 10 ans vous aurez ${age+10} ans`;
const agePlusTwenty = `Dans 20 ans vous aurez ${age+20} ans`;
const agePlusThirty = `Dans 30 ans vous aurez ${age+30} ans`;
document.getElementById('yourAge').innerHTML = `Vous avez ${age} ans`;
document.getElementById('plusTenYears').innerHTML = agePlusTen;
document.getElementById('plusTwentyYears').innerHTML = agePlusTwenty;
document.getElementById('plusThirtyYears').innerHTML = agePlusThirty;
document.getElementById('ageInput').value = age.toString();
}window.ReactiveSystem.addState('age', 21, renderAgeThings);document.getElementById('ageInput').addEventListener('input', (e) => {
window.ReactiveSystem.state.age = e.target.value
})Do you want support to launch your digital project?
Submit your project now