Можно ли открыть компонент React-Select при его монтировании?

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

Это будет выглядеть примерно так:

const proxyquire =  require('proxyquire');
const fakeGetScript = sinon.fake.returns({
    foo: 'fakeValue'
});
const p = proxyquire('./path/to/p', {
  scripts: {
    getScripts: fakeGetScript
  }
});

Затем вы можете запускать свои утверждения на fakeGetScript как вы ожидаете.

0
задан Ben Carp 19 January 2019 в 10:26
поделиться

1 ответ

В react-select вы можете контролировать открытие меню с помощью menuIsOpen реквизита. для достижения вашей цели я бы использовал комбинацию menuIsOpen, onInputChange и onFocus следующим образом:

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      menuIsOpen: true
    };
  }

  onInputChange = (options, { action }) => {
    if (action === "menu-close") {
      this.setState({ menuIsOpen: false });
    }
  };

  onFocus = e => {
    this.setState({ menuIsOpen: true });
  };
  render() {
    return (
      <div className="App">
        <Select
          options={options}
          onFocus={this.onFocus}
          onInputChange={this.onInputChange}
          menuIsOpen={this.state.menuIsOpen}
        />
      </div>
    );
  }
}

onInputChange может получать следующие события:

"set-value",
"input-change",
"input-blur",
"menu-close"
[1111 ] В зависимости от того, какое поведение вы ожидаете, я обновлю этот живой пример .

0
ответ дан Laura 19 January 2019 в 10:26
поделиться
Другие вопросы по тегам:

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