反应本机 - 'target. value not working on mobile'

React Native - 'target. value not working on mobile'

大家好,

我对这个应该存储和显示数据的小应用程序有一个小问题:https://snack.expo.dev/@vevlex/nullnotanobject

当我在 ipad 上从我的电脑直接测试(我在我的 cmd window 中扫描 QR 代码)时,应用程序可以正常启动,但是当重新 运行打开应用程序或将工作发送给另一个应用程序时window(检查工作后显示在右侧的“待办事项”按钮)。

当我从 Expo 运行 它时,我得到这个错误:null is not an object (evaluating 'jobs.map'

所以我假设我在保存/加载时做错了,或者在实际编写地图时做错了,但我不确定,而且我不知道如何自己解决这个问题。

谁能帮帮我? 请谢谢。

Update: var temp1 is not being set, as the alert here returns "Unidentified" even tho I just define it in the previous line. This only happens on iOS and android, it works fine on the web sim. Can anyone explain this?

<TextInput
                  style={s.jobInput}
                  onChange={(e) => {
                    var temp1 = e.target.value;
                    alert(temp1)
                    setJobs((currentJobs) =>
                      produce(currentJobs, (v) => {
                        v[index].address = temp1;
                      })
                    );
                    saveItem();
                    
                  }}
                  value={j.address}
                  placeholder="Address"
                />

您在 loadItem 中有以下代码。

const jsonValue = await AsyncStorage.getItem("@jobs");
const temp1 = JSON.parse(jsonValue);
setJobs(temp1);

AsyncStorage.getItem 的调用返回 null,您将其设置为状态变量,这就是您在尝试 .map() 时收到错误的原因不再是数组的值,而是 null.

如果此行为是有意为之,您只需在 jobs 后添加一个问号即可解决此问题。您可以阅读更多相关信息 here

jobs?.map((j, index)

好的,在了解我在更新中所说的内容后,我进行了更多搜索,发现在移动设备上您应该使用 onChangeText 而不仅仅是 onChange.