React-Native - 打开ValueChange输入引用了错误的字段

问题描述 投票:0回答:1

我需要创建一个类,该类会在

Objects
的基础上自动创建多个
JSON
(文本和开关对),并且当触发
Switch
事件时,
values
应获取不同的
onValueChange

问题:如果你看下面的代码。函数

switchChanged
只是获取最后传入的
field
(位置)。这里奇怪的是:上面的
Text
字段都得到了正确的值。
Just at the onValueChange function I get only the last field handed over

我删除了所有样式以便于阅读

  • JSON 如下所示:

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 中保存和获取内容

起始值在应用程序首次启动时设置为初始值

提前非常感谢您的帮助。

javascript json react-native
1个回答
0
投票

好吧,问了5分钟后我就知道答案了。在经历了 3000 个小时的绝望之后。

问题:

getSettingBox()
我将
for(var topicKey in settingIndex)
更改为
for(let topicKey in settingIndex)
。所以问题似乎是变量/let 的生命周期。

我不会关闭这个问题,也许有人有同样的问题并且像我一样害怕。

问候

© www.soinside.com 2019 - 2024. All rights reserved.