我需要创建一个类,该类会在
Objects
的基础上自动创建多个 JSON
(文本和开关对),并且当触发 Switch
事件时,values
应获取不同的 onValueChange
。
问题:如果你看下面的代码。函数
switchChanged
只是获取最后传入的 field
(位置)。这里奇怪的是:上面的Text
字段都得到了正确的值。 Just at the onValueChange function I get only the last field handed over
我删除了所有样式以便于阅读
module.exports = {
"reminders":
{
"title": "Erinnerungen",
"description": "Sollten Sie Favoriten gesetzt haben, können Sie uns hier erlauben Sie an die Events zu erinnern.",
"startvalue": true
},
"noIntro":
{
"title": "Introseite",
"description": "Wenn Sie wollen können Sie die beim ersten Start gezeigte Introseite bei jedem Start anzeigen lassen.",
"startvalue": true
},
"location":
{
"title": "GPS erlauben",
"description": "Erlauben Sie ihrem Smartphone das GPS für unsere Campuskarte zu benutzen.",
"startvalue": true
}
}
//There i require the above JSON
var settingIndex = require('../../settingIndex');
class Settings extends Component {
constructor(props) {
super();
}
getSettingBox(){
var Settings = [];
var object = {};
for (var topicKey in settingIndex){
var value = SettingStorage.get().filtered('key = "' + topicKey + '"')[0].value;
var title = settingIndex[topicKey].title;
var description = settingIndex[topicKey].description;
object=(
<View>
<View>
<Text>{title}</Text>
<Text>{description}</Text>
</View>
<Switch
onTintColor={styleHelper.colors.ACCENT_COLOR}
onValueChange={(value) => this.switchChanged(topicKey, value)}
value={value}/>
</View>
);
Settings.push(object)
}
return Settings;
}
render() {
var Settings = this.getSettingBox();
return(
<View>
<View>
{Settings}
</View>
</View>
);
}
switchChanged(field, value) {
console.log("Feld: " + field + "--- Value: " + value);
var obj = {};
obj[field] = value;
SettingStorage.set({
key: field,
value: value
});
this.setState(obj);
}
}
SettingStorage 是我自己的类,我可以在 Realm 中保存和获取内容
起始值在应用程序首次启动时设置为初始值
提前非常感谢您的帮助。
好吧,问了5分钟后我就知道答案了。在经历了 3000 个小时的绝望之后。
问题:在
getSettingBox()
我将for(var topicKey in settingIndex)
更改为for(let topicKey in settingIndex)
。所以问题似乎是变量/let 的生命周期。
我不会关闭这个问题,也许有人有同样的问题并且像我一样害怕。
问候