Реагирующая переменная проекта не определена no-undef

Прочитать эту статью: Появление и исчезновение констант в C ++


Вывод типов для автоматических переменных в C ++ 0x по существу такой же, как для шаблона параметры. (Насколько мне известно, единственное различие между ними состоит в том, что тип автоматических переменных можно выводить из списков инициализаторов, в то время как типы параметров шаблона могут не быть.) Каждая из следующих деклараций поэтому объявляет переменные типа int ( never const int):

blockquote>
auto a1 = i;
auto a2 = ci;
auto a3 = *pci;
auto a4 = pcs->i;

При выводе типа для параметров шаблона и автоматических переменных удаляются только константы верхнего уровня. Если шаблон функции принимает указатель или ссылочный параметр, сохраняется константа того, что указана или упоминается:

blockquote>
template
void f(T& p);

int i;
const int ci = 0;
const int *pci = &i;

f(i);               // as before, calls f, i.e., T is int
f(ci);              // now calls f, i.e., T is const int
f(*pci);            // also calls f, i.e., T is const int

Это поведение - это старые новости, применяемые так, как это делается как на C ++ 98, так и на C ++ 03. Соответствующее поведение для автоматических переменных, конечно, новое для C ++ 0x:

blockquote>
auto& a1 = i;       // a1 is of type int&
auto& a2 = ci;      // a2 is of type const int&
auto& a3 = *pci;    // a3 is also of type const int&
auto& a4 = pcs->i;  // a4 is of type const int&, too

Поскольку вы можете сохранить cv-квалификатор, если тип является ссылкой или указатель, вы можете сделать:

auto& my_foo2 = GetFoo();

Вместо того, чтобы указывать его как const (то же, что и для volatile).

Изменить: Что касается причины auto выводит возвращаемый тип GetFoo() как значение вместо ссылки (что было вашим основным вопросом, извините), рассмотрите это:

const Foo my_foo = GetFoo();

Вышеупомянутое создаст копию, так как my_foo ценность. Если auto должен был вернуть ссылку на lvalue, это было бы невозможно.

1
задан Tholle 17 March 2019 в 21:18
поделиться

1 ответ

Нельзя создать переменную events в методе componentDidMount и получить к ней доступ в методе render. Вместо этого вы можете непосредственно создать переменную events в методе рендеринга, поскольку она будет перезапущена, когда ваш запрос fetch будет выполнен и состояние обновлено.

Также убедитесь, что вы установили eventData для пустого массива в начальном состоянии, а не для пустого объекта, иначе вы получите ошибку, пытаясь использовать для него метод map.

export default class EventsPage extends Component {
  constructor(props) {
    super(props);

    this.state = {
      eventData: [],
      isLoggedin: true
    };
  }

  componentDidMount() {
    fetch("http://localhost:5999/events/" + this.props.match.params.userId, {
      headers: {
        "Content-Type": "application/json"
      },
      method: "GET",
      mode: "cors",
      credentials: "include"
    })
      .then(response => response.json())
      .then(data => {
        if (data["code"] === 200) {
          console.log("OK");
          this.setState({
            eventData: data.events_data,
            isLoggedin: true
          });
        } else {
          console.log("NOT OK");
          this.setState({
            eventData: data.events_data,
            isLoggedin: false
          });
        }
      });
  }

  render() {
    let events = this.state.eventData.map(event => (
      <Events
        name={event.name}
        image_url={event.image_url}
        start_time={event.start_time}
        end_time={event.end_time}
        price={event.price}
        age_from={event.age_from}
        age_to={event.age_to}
        x_coord={event.x_coord}
        y_coord={event.y_coord}
        status={event.status}
        status_id={event.status_id}
        members_total={event.members_total}
        members_needed={event.members_needed}
        owner_id={event.owner_id}
        address={event.address}
      />
    ));

    return <>{events}</>;
  }
}
0
ответ дан Tholle 17 March 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: