代码之家  ›  专栏  ›  技术社区  ›  Kevin.a

如何在react中呈现元素

  •  0
  • Kevin.a  · 技术社区  · 6 年前

    我有这个函数来获取一组字符和图像。

       const displayCharacters =  async () => { 
            if(filteredCharacters !== 'default'){
              const a = filteredCharacters.map(e => e.name);
    
              const options = {
                method: "POST",
                headers: { "Content-Type": "application/json" },
                body: JSON.stringify({ 'data' : a })
              };
    
              const b = await fetch("/image",options)
              return b.json(); 
    
            }else{
              return [];
            }
          }
    

    html如下所示:

      return (
        <div className="App">
          <form>
            <select name="movie" onChange ={handleMovieChange} value={selectedMovie}>
              <option value ="default">Please select a movie</option>
              {movieOptions()}
            </select>
    
            <select name="species" onChange={handleSpeciesChange} value={selectedSpecies}>
              <option value="default">Please select a species</option>
              {selectedMovie !== 'default' ? speciesOptions() : ''}
            </select>
    
            <select name="planets" onChange={handlePlanetChange} value={selectedPlanets}> 
              <option value="default">Please select a planet</option>
              {selectedSpecies !== 'default' ? planetOptions() : ''}
            </select> 
          </form>
    
          {displayCharacters().then(data=> data.map(char => (<div>{char.name}</div>)))}
        </div>
    
      );
    }
    

    但我有个错误:

    错误:对象作为反应子对象无效(找到:[object 而是数组。

    0 回复  |  直到 6 年前
        1
  •  1
  •   HeyParkerJ    6 年前

    正在发生的事情是,React无法在渲染中解决承诺。最初,数据获取函数将返回一个promise对象,而不是返回React无法呈现的数据。

    您将需要设置state,首先保存占位符数据,直到promise被解析,然后保存promise解析后的数据。检查这个问题以获得一个好的解决方案。

    Objects are not valid as a React child (found: [object Promise])

    推荐文章