特定のアクセス許可に対して子コンポーネントの承認を実行しようとしています。私はノードにアクセスするためにref
コールバックを使用しています。そこで、私はパーミッションをチェックできます。これらの権限に応じて、コンポーネントをアンマウントしたいと思います。Reactコンポーネントをアンマウントできません。親コンポーネントからfalseを返します。
コールバック内で、ReactDOM.findDOMNode()
を使用してからReactDOM.unmountComponentAtNode()
を削除しようとしています。後者はfalseを返し続けますが、findDomNode
はDOM要素を適切に選択しているようです。
class Auth extends React.Component {
...
checkPermissions(component) {
const domNode = ReactDOM.findDOMNode(component); // => <p>...</p>
if (domNode) {
let wasUnmounted = ReactDOM.unmountComponentAtNode(domNode);
console.log('was unmounted', wasUnmounted); // => false
}
}
render(){
return (
<div>
{this.state.authorized &&
<Component ref={(c) => this.checkPermissions(c)} {...this.props} />
}
</div>
)
}
...
どのように効果的に私のコンポーネントを削除するReactDOM.unmountComponentAtNode()
を使用することができますか?
もっと「リアクション」アプローチを採用してもうれしいですが、これまでのところ私は見つけられませんでした。私は、コンポーネントレベル*でパーミッション*を設定し、それらのパーミッションに応じて(データストアで指定されたパーミッションと一致するかどうかにかかわらず)コンポーネントをレンダリングします。私は、コンポーネントにpermissions_以外のロジックを組み込むことは望ましくありません。最初にDOMノードをレンダリングせずに、親コンポーネントから子コンポーネントメソッドにアクセスする方法を知っていますか? – Himmel
コンポーネントにはどのような権限が必要ですか?親コンポーネントからこれらのアクセス許可を渡すことはできますか? – jaybee
子コンポーネントがレンダリングするかどうかを決定する、すべてを包括する単一の認証コンポーネントが必要です。私は個々のコンポーネントに固有のアクセス許可の長いリストを持っています。パーミッションは単なる文字列値です。 私は、コンポーネントの内部でこれらのアクセス許可を指定できるソリューションを探しています。次に、親Authコンポーネントを使用して、それらをデータストアのアクセス許可と照合することができます。 – Himmel