【发布时间】:2020-07-20 02:29:27
【问题描述】:
我正在构建小型反应应用程序。主要任务是使用 PokeApi 创建关于口袋妖怪的应用程序。当我点击 pokeCard 时,我的侧边栏必须显示有关 pokemon 的主要信息。所以,我想显示口袋妖怪的数量。我们怎么知道,所有数字都从#开始。但是在 PokeApi 中,口袋妖怪的数量不是以 # 开头的,也不包含任何 0。例如,Charmander 的数量是 #004,但在 PokeApi 中 Id 是 4。 所以,我用逻辑运算符创建了条件。请看:
{(pokemon.id.length === 1 && <span>#00{pokemon.id}</span>) ||
(pokemon.id.length === 2 && <span>#0{pokemon.id}</span>) ||
(pokemon.id.length === 3 && <span>#{pokemon.id}</span>)}
我希望我的创作是正确的。但是,在我的屏幕上,我看到了 TypeError: Cannot read property 'length' of undefined 。我想,这是因为,在我点击之前,pokemon.id 是未定义的。我尝试创建 typeof(pokemon.id) == "undefined" && <span>loading</span> ,但它不起作用。
这是代码,我是如何设置口袋妖怪的。
const [SelectedPokemon, setSelectedPokemon] = useState([]);
const fetchPokemonDetails = (pokemonId) => {
fetch(`${API_URL}${pokemonId}`)
.then((result) => result.json())
.then((result) => {
setSelectedPokemon(result);
}, setLoadingForSelectedPokemon(false))
.catch((error) => console.log("Error:", error));
};
你能帮我解决一下吗?
【问题讨论】:
-
表示
id未定义....所以听起来你在设置之前渲染了一些东西。 -
@epascarello 我怎么理解,它就像你说的那样工作。但我不知道如何避免它。当我点击按钮时它必须响应。
-
如果没有看到你的 React 代码很难知道你是如何设置
pokemon -
@epascarello 我正在编辑我的帖子,并添加代码,我如何在底部设置口袋妖怪。
标签: javascript reactjs undefined logical-operators