RootStore
внутрь необходимого стора:export class RootStore {
constructor() {
this.authStore = new AuthStore(this);
}
}
export class AuthStore {
private rootStore: RootStore;
constructor(rootStore: RootStore) {
this.rootStore = rootStore;
}
signIn = (email: string, password: string) => {
// ...
this.rootStore.profileStore.getObservables();
// ...
};
}
npm run build
, потом папку dist
из корня проекта скопировать куда-нибудь на VPS, настроить nginx (или другой) веб-сервер, чтобы он запросы по нужному вам URL перенаправлял на index.html
из той папки. getCharacters().data === undefined
, и уже даже из этого очевидно, что getCharacters().data.results
приведёт к ошибке, т.к. это попытка обратиться к свойству у undefined
.useEffect
с пустым массивом зависимостей, благодаря чему он сработает только при монтировании/размонтировании компонента:const [dataCards, setDataCards] = useState([]);
useEffect(() => {
getCharacters().then((data) => setDataCards(data));
}, []);
dataCards
как пустой массив (что логично, ведь данных пока что нет). При монтировании компонента сработает useEffect
, внутри него мы получим данные и уже их сможем использовать в dataCards
.export const Footer = (props?: IFooterProps) => {
return (
<View style={styles.container}>
{props?.button ? (
<>
<RNHoleView style={styles.background} holes={[hole]}>
<View style={styles.maskBorder}></View>
</RNHoleView>
{props.button}
</>
) : (
<View style={styles.background}></View>
)}
</View>
);
};
pattern
срабатывает непосредственно перед отправкой формы. Кроме того, это не запретит ввод символов, отличных от цифр, а лишь покажет уведомление в случае несоответствия. Вашу же задачу можно решить несколькими способами.<input type="number" />
. Из особенностей: он допускает ввод некоторых символов, отличающихся от цифр (например, "+" и "e").onChange
у поля ввода:const [value, setValue] = useState('')
const handleInputChange = (e) => {
setValue(e.target.value.replace(/\D/g, ''))
}
<input value={value} onChange={handleInputChange} />