我在找一种方法来替换阻塞
prompt
调用旧系统。它以阻塞方式请求用户输入:
const name = prompt('name:', previousValue);
if (name) {...
我想用React组件替换它。我在整个系统中使用redux和context for i18n,所以我试图找到一种优雅的方式来实现它。我希望能够从应用程序中的每个方法调用它。
目前,我在根应用程序组件中呈现了一个提示组件,并在传递回调时通过上下文公开它:
class App extends Component {
getChildContext = () => {
return {
i18n: i18n,
prompt: this.prompt
}
};
state = {
showPrompt: null,
};
prompt = (title, value, callback) => {
this._prompt = {title, value, callback};
this.timeout = setTimeout(() => {
this.setState({showPrompt: true});
}, 100);
}
// ...class continues...
用法:
this.context.prompt('name', '', callback: (occurrences) => {
if (name) {
this.props.changeName(name);
}
}
});
但肯定有人带着更好的理由来了?