مشکل در ری اکت

3 سال پیش توسط Hanan Farahdel مطرح شد
آفلاین
user-avatar
Hanan Farahdel ( 3047 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

با سلام روزتون بخیر
یه برنامه دارم که شاملی input و یه button مشخصه value اینپوت وصله به state ها که هروقت و درصورت تغییر مقدار توسط کاربر تو state هم تغییر میکنه.
وقتی رو button کلیک میشه مقداری که تو state برای اینپوت هست رو push میکنم تو آرایه ای که تو استیت ساختم، بار اول درست push میشه ولی مشکلی که هست وقتی مقدار اینپوت آپدیت میشه این تغییر روی تمام عناصر آرایه هم تاثیر میذاره و همه آیتم های یکی میشن.

ممنون میشم کمک کنید این مشکل رو حل کنم.
باتشکر

آفلاین
user-avatar
مهدی ( 23382 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

کدتو قرار بده

آفلاین
user-avatar
Hanan Farahdel ( 3047 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

state های کامپونت

state={  
currentVar:{VarTitle:null,varType:null},  
varList:[],  
errors:{},dialogDisplay:false,  
toast:{  
id:"ManageMagicVar_toast",cook:false,type:"",text:"",icon:""  
}  
}

input که مقدار value متصله به state.curentvar.varTitle

<TextInput
                            with="100%"
                            name="VarTitle"
                            lable="عنوان متغیر"
                            placeholder="لطفا عنوان متغیر را وارد کنید"
                            isRequired={true}
                            error={errors.VarTitle}
                        onChange={this.handleVarTitle}
                        value={currentVar.VarTitle}
                        />

باتنی که مقدار رو تویه آرایه پوش میکنه

 CreateVar(){
        var {varList,currentVar}=this.state;
        varList.push(currentVar);
        this.setState({varList});

    }
آفلاین
user-avatar
مهدی ( 23382 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

الان من با یه کد مشابه همین رو تست کردم هیچ مشکلی نداشت

آفلاین
user-avatar
Hanan Farahdel ( 3047 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

لطفا کدتو بذار

آفلاین
user-avatar
مهدی ( 23382 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0
class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      currentVar: '',
      varList: [],
    }
  }

  setVal = () => {
    let {varList,currentVar}=this.state;
    varList.push(currentVar);
    currentVar =  ''; 
    this.setState({varList, currentVar});
  }

  setCurrent = (e) => {
    let currentVar = e.target.value
    this.setState({currentVar});
  }

  render() {
    var { varList, currentVar } = this.state;
    return (
      <div className="App">
        <input
          onChange={this.handleVarTitle}
          value={currentVar.VarTitle}
          onChange={this.setCurrent}
        />
        <button onClick={this.setVal}>set</button>
      </div>
    );
  }
}

export default App;
آفلاین
user-avatar
محمود فرهادی ( 1284 تجربه )
3 سال پیش
تخصص : برنامه نویس

لینک کوتاه اشتراک گذاری

0

سلام
باید موقعی ک varList رو پر میکنی اطلاعات قبلی هم بهش اضافه کنی

let varList=this.state.varList;
varList={...varList};
varList.push(currentVar)
برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.