Закрыть выпадающее меню при прокрутке

Я понимаю, что стандарт SQL требует нечувствительности к регистру. Я не верю, что базы данных полностью соответствуют стандарту.

MySQL имеет настройку конфигурации как часть своего «строгого режима» (сумка для захвата нескольких настроек, которые делают MySQL более совместимым со стандартами) для регистрозависимые или нечувствительные имена таблиц. Независимо от этого параметра, имена столбцов по-прежнему нечувствительны к регистру, хотя я думаю, что это влияет на отображение имен столбцов. Я считаю, что этот параметр является экземпляром для всех баз данных в экземпляре RDBMS, хотя сегодня я исследую это, чтобы подтвердить это (и надеюсь, что ответ будет отрицательным).

Мне нравится, как Oracle справляется с этим гораздо лучше , В прямом SQL идентификаторы, такие как имена таблиц и столбцов, нечувствительны к регистру. Однако, если по какой-то причине вы действительно хотите получить явный корпус, вы можете заключить идентификатор в двойные кавычки (которые в Oracle SQL отличаются от одиночных кавычек, используемых для вложения строковых данных). Итак:

SELECT fieldName
FROM tableName;

будет запрашивать имя поля из tablename, но

SELECT "fieldName"
FROM "tableName";

будет запрашивать имя поля из tableName.

Я уверен, что вы даже можете используйте этот механизм для вставки пробелов или других нестандартных символов в идентификатор.

В этой ситуации, если по какой-то причине вы нашли желаемые имена столбцов и столбцов с явным образом, они были доступны вам, но все равно что я бы настоятельно рекомендовал.

Моя конвенция, когда я ежедневно применяла Oracle, заключалась в том, что в коде я бы поставил все ключевые слова Oracle SQL в верхнем регистре и все идентификаторы в нижнем регистре. В документации я бы поместил все имена таблиц и столбцов в верхний регистр. Это было очень удобно и удобочитаемо, чтобы иметь возможность сделать это (хотя иногда и боль, чтобы набрать так много капиталов в коде - я уверен, что я мог бы найти функцию редактора, чтобы помочь здесь).

На мой взгляд, MySQL особенно плохо разбирается в этом на разных платформах. Нам нужно иметь возможность удалять базы данных в Windows и загружать их в UNIX, и это катастрофа, если установщик в Windows забыл включить RDBMS в режим, чувствительный к регистру. (Чтобы быть справедливым, часть причины, по которой это катастрофа, - это то, что наши кодеры давно уже ошибочно полагались на чувствительность к регистру MySQL в UNIX.) Люди, которые написали установщик Windows MySQL, сделали это очень удобным и Windows-like, и было здорово продвигаться к тому, чтобы дать людям чекбокс, чтобы сказать: «Хочешь включить строгий режим и сделать MySQL более стандартным?» Но MySQL очень удобен в том, что он отличается от стандарта стандартным, а затем ухудшается, оборачиваясь и отличаясь от своего собственного стандарта де-факто на разных платформах. Я уверен, что в разных дистрибутивах Linux это может быть еще более усугублено, так как упаковщики для разных дистрибутивов, вероятно, иногда использовали свои собственные предпочтительные настройки конфигурации MySQL.

Здесь Вопрос, который обсуждается, если чувствительность к регистру желательно в РСУБД.

1
задан Thelouras 18 January 2019 в 17:16
поделиться

1 ответ

Вам необходимо добавить прослушиватель событий в конструктор и самостоятельно обработать состояние видимости раскрывающегося списка. Попробуйте что-то вроде этого:

class Example extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      visible: false
    };

    window.addEventListener("scroll", this.closeMenu);
  }

  toggleMenu = () => {
    this.setState({ visible: !this.state.visible });
  };

  closeMenu = () => {
    this.setState({ visible: false });
  };

  render() {
    return (
      <div>
        <Dropdown
          overlay={menu}
          onVisibleChange={this.toggleMenu}
          visible={this.state.visible}
          trigger={["click"]}
        >
          <a className="ant-dropdown-link" href="#">
            Click me <Icon type="down" />
          </a>
        </Dropdown>
      </div>
    );
  }
}

Рабочий пример: https://codesandbox.io/s/2ovjzwqz9y [ 111]

0
ответ дан Max 18 January 2019 в 17:16
поделиться
Другие вопросы по тегам:

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