javascript - 如何获得 react 返回元素的长度?

标签 javascript reactjs jsx

我想获取 {book.volumeInfo.description} 元素的长度来检查描述是否为空(if {book.volumeInfo.description} >0 {...} else { "Book without description "

我不知道如何以正确的方式获取此 {book.volumeInfo.description} 元素的长度。你有什么理由如何解决这个问题?

App.js

import React, { useState } from "react";
import ReactDOM from "react-dom";
import axios from "axios";
import 'bootstrap/dist/css/bootstrap.min.css';


const App = () => {
const [searchTerm, setSearchTerm] = useState("");
const [books, setBooks] = useState({ items: [] });
const onInputChange = e => {
    setSearchTerm(e.target.value);
};

let API_URL = 'https://www.googleapis.com/books/v1/volumes';

const fetchBooks = async () => {
    const result = await axios.get(`${API_URL}?q=${searchTerm}`);
    setBooks(result.data);
};

const onSubmitHandler = e => {
    e.preventDefault();
    fetchBooks();
};



return (
    <section>
        <form onSubmit={onSubmitHandler}>
            <label>
                <span>Search for books</span>
                <input
                    type="search"
                    placeholder="microservice, restful design, etc.,"
                    value={searchTerm}
                    onChange={onInputChange}
                />
                <button type="submit">Search</button>
            </label>
        </form>
        <ul>
            {books.items.map((book, index) => {
                return (
                    <div>




                        <div class="row">
                            <div class="col-12">
                                <center>  <h5>{book.volumeInfo.title}</h5> 
</center>
                                <center>  <h5>{book.volumeInfo.categories} 
</h5></center>
                                <center>  <h5>{book.volumeInfo.authors} 
</h5></center>
                                <center>  <h5>{book.volumeInfo.language} 
</h5></center>
                                <center>  <h5> 
{book.volumeInfo.publishedDate}</h5></center>
                                <center>  <h5> 
{book.volumeInfo.description}</h5></center>

                            </div>
                        </div>




                                <img

                                alt={`${book.volumeInfo.title} book`}
                                src= 
{`http://books.google.com/books/content?id=${
                                    book.id

}&printsec=frontcover&img=1&zoom=1&source=gbs_api`}
                                />
                                <hr />


                    </div>




                );
            })}
        </ul>
    </section>
   ); 
};
export default App;

最佳答案

您可以使用三元运算符有条件地显示您需要的文本。

<h5>
  {book.volumeInfo.description && book.volumeInfo.description.length > 0 ? book.volumeInfo.description : "Book without description"}
</h5>

编辑以检查未定义,感谢 Dany。

关于javascript - 如何获得 react 返回元素的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57724505/

相关文章:

javascript - 如何使用 capybara 和恶作剧检查 Javascript 错误?

javascript - 将 ng-click 添加到使用 ng-bind-html 添加的 div

android - 如何将 base64 转换为 pdf React-Native

javascript - 有没有一种方法可以在一个 onClick 事件中发送 Prop 和函数?

javascript - 在 useState() 声明处赋值与 useEffect() 比较

ecmascript-6 - JSX 中的虚拟 DOM 操作 (React)

html - 为什么 react 中的边距无法正常工作?

javascript - 在必填字段上禁用 chrome/firefox 工具提示

javascript - 尝试使用容器的 props 映射 Redux 状态时遇到困难

android - 使用动态页面 View 对 native ViewPagerAndroid 使用react