Firebase 下载 URL 随 React.js render() 中的变量一起消失

Firebase download URL disappears with variable inside React.js render()

在 html 的一部分中,我 return 在 React 渲染函数中。 “故事”(在渲染之前从状态中检索值)包含 js 对象,其属性包括“url”等。当单独记录整个对象和其他属性时,它们会出现在控制台上,但“url”属性不会。 url 包含图像的 firebase 下载 url,当我获取它以将其加载到状态时,它存在于渲染函数之外。但是在我进入 render() 之后就消失了。这是 render() 中的一个片段。

     <div className="Storysubmain">
        {stories.map((story, idx) => {
          console.log(story);
          console.log(JSON.stringify(story));
          console.log(story.url);
          return (
            <div className="story" key={idx}>
              {story.image != null ?
                <div className="storyimagebox">
                  <a rel='noopener noreferrer' target='_blank' href={story.link}>
                    <img src={story.url} alt='Related view' />
                  </a>
                </div>
                : ""
              }
              <div className="storydetails">
                {story.khronos == null ?
                  "" : (
                    <span className="storykhronos">{story.khronos}</span>
                  )
                }
                <span className="storytitle">{story.title}</span>
                <p>{story.text}</p>
              </div>
            </div>
          )
        })}
      </div>
    </div>

控制台输出如下:

因此,对象将“url”属性显示为对象而不是字符串。 “url”在单独访问时未定义。我不知道发生了什么。结果我得到了图像的另一个视图。提前致谢。

由于 JSON.stringify 没有显示 url 这意味着 value/property 是在您最初记录对象后添加的,并且 Chrome 的控制台是只是用新的 属性.

更新记录的对象

很可能 url 是从某处异步加载的,但我们无法根据您共享的代码确定它的加载位置。无论如何都没关系,因为无论发生在何处,解决方案都是相同的:当您在 stories 对象中的故事上设置 url 时,您还需要更新 stories 对象,以便 React 知道它需要更新该对象的 UI。