Я недавно начал с реактивом, машинописью и офисным пользовательским интерфейсом.Но я уже борюсь с одним из компонентов из ткани.В этом примере у меня есть простой компонент Product с SpinButton и DefaultButton.Когда нажата кнопка DefaultButton, я хочу получить значение SpinButton и установить фокус на нем.Чтобы получить члены интерфейса ISpinButton, я использую ссылку на React.RefObject.Мой код выглядит следующим образом:
import * as React from 'react';
import { DefaultButton } from 'office-ui-fabric-react/lib/Button';
import { SpinButton } from 'office-ui-fabric-react/lib/SpinButton';
class Product extends React.Component<{}, {}> {
private spbStockRef: React.RefObject<SpinButton> = React.createRef<SpinButton>();
public render(): JSX.Element {
return (
<React.Fragment>
<SpinButton
ref={this.spbStockRef}
defaultValue="0"
label={'Stock '}
min={0}
max={99999}
step={1}
onFocus={() => console.log('onFocus called')}
onBlur={() => console.log('onBlur called')} />
<DefaultButton onClick={this.onButtonClick} />
</React.Fragment>)
}
private onButtonClick = (e: React.MouseEvent<HTMLButtonElement>) => {
const node = this.spbStockRef.current!;
if (node) {
console.log(node.value);
node.focus();
}
}
}
export default Product;
Внутри onButtonClick Intellisense Visual Studio предлагает и 'value' и 'focus ()' для переменной узла, поэтому фактические члены ISpinButton должны быть доступны.
Но когда нажата кнопка, console.log (node.value) выдает undefined , и на node.focus () выводится ошибка TypeError: Ошибка TypeEr: узел.focus не является функцией .Я также хочу упомянуть, что console.log (node) выводит правильный экземпляр объекта, поэтому ссылка работает правильно.
Есть идеи, что я здесь не так делаю?В примерах компонента SpinButton также ничего не указано, как заставить это работать.
https://developer.microsoft.com/en-us/fabric?example=#/components/spinbutton
Спасибо