javascript - React js 使用 json 响应渲染功能性 html

标签 javascript reactjs components

我创建了像这样的下拉组件

  const CONTACTS_LIST = () => (

    <select>
    {
    list_data &&
    list_data .map((h, i) => 
    (
    <option key={i} value={h.list_id}>{h.name}</option>))
    }
    </select>

  );

是否可以像这样使用 json 响应渲染 html?我可以使用 setstate 在常量中设置响应。但只是想知道这也可能吗?

    const CONTACTS_LIST = () => (

      fetch(URL)
      .then(response => response.json())
      .then(json => {
      (
        render '
        (   <select>
        {
        json &&
        json.map((h, i) => 
        (
        <option key={i} value={h.list_id}>{h.name}</option>))
        }
        </select>
        )

        )
    );

请推荐

最佳答案

建议在componentDidMount方法内进行异步请求,用从api获取的数据更新组件的状态,更新状态时组件会重新渲染并验证是否有元素,如果有则 的选项。 希望对您有帮助。

class MyComponent{
  constructor () {
    super();

    this.state = {
      list_data: []
    };
  }

  componentDidMount () {
    const URL = "";
    fetch(URL).then(response => response.json())
      .then(json => {
        this.setState({
          list_data: json
        });
      });
  }

  render () {
    return (
      <select>
        {
          list_data.length === 0
            ? <option value="">Waiting moment</option>
            : list_data.map(({ h, i }) => (
              <option key={i} value={h.list_id}>{h.name}</option>
            ))
        }
      </select>
    )
  }
}

如果你使用的是 React 16,你可以使用 Hooks、useState 和 useEffect,试试这种方法

import React, { useEffect, useState } from 'react';

function myComponent () {
  const [list_data, set_list_data] = useState([]);

  useEffect(() => {
    const URL = "";
    fetch(URL).then(response => response.json())
      .then(json => {
        set_list_data(json);
      });
  }, []);

  return (
    <select>
      {
          list_data.length === 0
            ? <option value="">Waiting moment</option>
            : list_data.map(({ h, i }) => (
              <option key={i} value={h.list_id}>{h.name}</option>
            ))
        }
    </select>
  );
}

Hook feature reactjs

关于javascript - React js 使用 json 响应渲染功能性 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58775600/

相关文章:

.each 循环内的 javascript .push 方法仅返回一个数组

javascript - 表单数据 | axios : Unable to get headers from FormData, 错误:getHeaders 不是函数

javascript - 使用 componentDidUpdate 循环

Angular 5 - 组件和服务之间的通信

javascript - document.cookie 在 Angular 2 组件中为空 - JavaScript

javascript - JS中如何避免绑定(bind)对象?

javascript - jquery 弹出必须按两次“确定”两次才能使其消失

javascript - ReactJS Ant Design - 单击按钮打开 DatePicker

angular - 在 Angular2 的路由器中获取事件路由上的组件实例?

javascript - 添加选项以增加 YouTube 视频的低音