Один из способов - передать замыкание из родительского компонента в CustomSlider
в качестве реквизита и отслеживать изменения.
<CustomSlider idx={n}
theClosurePassedThrough= (n, values) => {
// update the parents states here accordingly
}
>
Затем вызовите это закрытие в соответствующее время.
multiSliderValuesChange = values => {
this.setState({multiSliderValue: values});
this.props.theClosurePassedThrough(this.props.idx, values);
};
Лучшая практика, однако, это использовать MobX или Redux.
iTunes регистрируется в качестве обработчика протокола для пользовательских itms: //
и itmss: //
протоколы. Когда вы нажимаете URL-адрес с этим протоколом - в этом случае после шага косвенного обращения на веб-серверах Apple - iTunes запускает его обработку, так же как ваш браузер запускается для обработки URL-адресов http: //
или вашей электронной почты. Программа запускается для обработки URL-адресов mailto:
.
По сути, это не «кроссплатформенная», но она работает на всех платформах, так как обработчики URL существуют и везде делают одно и то же. .
Недостатком является то, что он работает только в том случае, если приложение уже установлено, поэтому вам может потребоваться страница-заставка, которая инструктирует людей при необходимости установить приложение.
Silverlight 3 и Adobe Air позволят вам запускать приложения вне браузера.
Если это не зависит от ОС, то нельзя полагаться на доступность какой-либо конкретной программы. Какую программу вы бы хотели запустить в любом случае?