זהו נושא דיון מלווה לערך המקורי שב־https://www.tocode.co.il/bundles/react/lessons/90b020ad-75d2-4238-889f-6508a5beab49
זהו נושא דיון מלווה לערך המקורי שב־https://www.tocode.co.il/bundles/react/lessons/90b020ad-75d2-4238-889f-6508a5beab49
ניסיתי להעביר את הפקד של הcounter לצורה של מחלקה אבל נתקעתי כאן:
this.setState( {count:count+delta});
הוא כמובן לא מכיר לי את count כשאני רושמת אותו בתור ערך, השאלה איך אפשר לגשת לערך הנוכחי של count
הי,
יכול להדביק את כל קוד המחלקה שניסית לכתוב?
כן,תודה!
export default class Counter2 extends React.Component {
constructor(props) {
super(props);
this.state = { count:0 };
this.inc = this.inc.bind(this);
}
inc() {
const { delta } = this.props;
this.setState( {count:count+delta});
}
render() {
const {count}=this.state;
return (
<div>
<p>
I was clicked {count} times
<button onClick={this.inc}>Click Me</button>
</p>
</div>
);
}
}
הי,
הבעיה בפונקציה inc. הנה שתי דרכים (השניה יותר מומלצת) לגשת ל count מהסטייט הישן:
inc() {
const { delta } = this.props;
// 1. Works. Less recommended
this.setState({
count: this.state.count + delta
});
// 2. Works and recommended
this.setState((oldState) => ({
count: oldState.count + delta,
}));
}
תודה רבה!!
הדרך השנייה עובדת מעולה, אבל הדרך הראשונה לא
this.count=undefind
סליחה תיקנתי - צריך להיות this.state.count
הי,
תודה! זה עובד מעולה!!
היי אני גם המרתי את הפקד counter ל class ומשום מה זה לא רץ לי… מצו"ב הקוד תודה!
import React from "react";
export default class Counter extends React.Component{
constructor(props){
super(props);
this.state={count:0}
this.inc=this.inc.bind(this)
// this.res=this.res.bind(this)
}
inc(){
this.setState((x)=>({x:x+delta,}));
}
render(){
const {delta}=this.props
const {count}=this.state
return(<div>
<p>
{count}המספר שלי הוא
<button onClick={this.inc}>click me </button>
{/* <button onClick={res}>resert</button> */}
</p>
</div>
);
}
}
}
הי
הבעיה הכי גדולה בכתיב ה class-ים היא שהסטייט הוא אוביקט יחיד, ואז כל קריאה ל setState צריכה לעבוד עם כל האוביקט (ומזה יבואו בהמשך עוד אינסוף בעיות, ובגלל זה היום כולם עובדים בכתיב הפונקציות).
בכל מקרה כתבתי גירסה מתוקנת של מה שניסית לכתוב כאן:
אני ממליץ עדיין לשמור מרחק מכתיב הקלאסים כמה שאפשר