React/ES6を初めて使用しました。これは基本的な問題です。私は、jsonファイルの配列をエクスポートする.jsファイルを作成しています。このデータは変更されません。後で[クリア]ボタンをクリックすると、このファイルから元のデータにデータをリセットします。何らかの理由で私が自分の状態にするデータの置き換えによって、元のインポートが変更されています。どんな助けでも大歓迎です。私はこのシナリオでImmutable.jsを必要としないと確信していますが、私は現在、この問題を取り除くためにこれを使用しています。インポート時のデータ変更
TimerData
const nelths = {
level: 10,
endTime: 1980,
objectives: [
{
id: 1,
objectiveName: "Rokmora",
objectiveCompleteTime: null
},
{
id: 2,
objectiveName: "Ularogg Cragshaper",
objectiveCompleteTime: null
},
{
id: 3,
objectiveName: "Naraxas",
objectiveCompleteTime: null
},
{
id: 4,
objectiveName: "Dargrul",
objectiveCompleteTime: null
},
],
}
const TimerData = [nelths];
export default TimerData;
輸入
import React, { Component } from 'react'
import TimerData from './timerData'
import FontAwesome from 'react-fontawesome'
import {Map} from 'immutable'
コンストラクタ
constructor(props) {
super(props);
//const timerData = Object.assign({}, TimerData[0]);
var timerData = Map(TimerData[0]);
this.state = {
level: timerData.get('level'),
endTime: timerData.get('endTime'),
objectives: timerData.get('objectives'),
}
}
変更
var objs = this.state.objectives.slice();
objs.forEach(function (element, index, array) {
element.objectiveCompleteTime = Date.now();
});
this.setState(Object.assign({}, this.state, {objectives: objs}));
クリア
var timerData = Map(TimerData[0]);
this.setState(Object.assign({}, this.state, {objectives: timerData.get('objectives'), active: false}));
私が試してみて、スペースを節約し、&変更にinit私の状態のコアコンポーネントを表示するには、コードの一部を切り取ってきました。問題に関するヒントや悪い習慣に関するヒントとともに、感謝します。
ありがとうございました!
全体を取得するために役立つだろうコンポーネントコード。また、コンソールのエラーをチェックしましたか? –
https://gist.github.com/bae39c9dd49348205599e33a6ade806c - これは未加工コードのダンプです。コンソールのエラーをチェックしました。誰もいません。 – Auro