はい、ReactでjQueryを使用することには不利な点があります。
はVDOM差分のアルゴリズムでは、これはあなたが言及したものです
混乱します。はい、read-only
属性のみを使用すると問題ありませんが、古いブラウザをターゲットにしている場合を除き、document.querySelector
のようなものは軽量になります。
あなたが持ち込んでいるすべての貧困は、特に図書館のように大きなものであり、細心の注意を払って審査されるべきです。詳細はthe website obesity epedemicを参照してください。
さらに、私は次の例で示すように、「私はそれを読み込みに使用して、残りのものを実行させます」という考えは、コードに重大な混乱をもたらします。
あなたは私の意見で反応
のパターンを放棄し、より大きな問題が反応のパターンを放棄しています。 Reactを1つの文で記述すると、
Reactは、state
入力から派生したHTML、CSS、およびJavaScript機能を生成するために使用されるコンポーネントベースのライブラリです。
単純なUserProfile
コンポーネントがあるとします。このコンポーネントは、プッシュ通知かどうかを受信するためのスイッチを含む、ユーザーに関するいくつかのデータを持っています:
は
// Please note this is simplified pseudo-code, and will likely not work
class UserProfile extends Component {
state = {
name: 'Bob',
profilePic: 'someurl.com/profile-pic',
isReceivingNotifications: false
}
updateReceivingNotifications =() => {
this.setState({ isReceivingNotifications: !this.state.isReceivingNotifications })
}
render() {
const { name, profilePic, isReceivingNotifcations } = this.state;
return (
<div>
<h2>{name}</h2>
<img src={profilePic} />
<input type="checkbox" checked={isReceivingNotifications} onChange={this.updateReceivingNotifications} />
</div>
);
}
}
シンプル、コンポーネントのプレゼンテーションは、コンポーネントの状態に由来しています。 isReceivingNotifcations
がtrueの場合、チェックボックスがオンになります。
はのは、提案された設計パターンと同じ例を見てみましょう:
class UserProfile extends Component {
state = {
name: 'Bob',
profilePic: 'someurl.com/profile-pic',
isReceivingNotifications: false
}
componentDidMount() {
const checkBox = document.getElementById('my-checkbox');
const that = this;
// Use a regular function to bind the this context to the checkbox instead of component
checkBox.addEventListener('change', function() {
if (this.checked) {
that.setState({ isReceivingNotifcations: true });
} else {
that.setState({ isReceivingNotifcations: false });
}
});
}
render() {
const { name, profilePic, isReceivingNotifcations } = this.state;
return (
<div>
<h2>{name}</h2>
<img src={profilePic} />
<input
type="checkbox"
checked={isReceivingNotifications}
id="my-checkbox"
/>
</div>
);
}
}
最初は関係なく、あなたはjQueryのか、あなたが使用するどのようなDOM操作ライブラリでこれをフォーマットする方法を、よりクリーンではありません。
これは人為的な例ですが、実生活でこのバージョンを見たときはいつもかなり混乱しています。
最後に、なぜですか?
ちょっと時間をかけて、反応パターンを学習してください。私はを提案したいと思います。あなたがReactを使っているのと同じ理由でjQueryが最後の手段になるはずです。これに
唯一の例外は、ライブラリを書き換え以外の他のオプションを持っていない、あなたが使用してこの場合
に反応jQueryのライブラリです。 this articleで強調表示されているように、それに対応するためにラッパーコンポーネントを記述する必要があります。
jQueryのセレクタエンジンのみが必要な場合は、[Sizzle](https://sizzlejs.com/)または[Zepto](http://zeptojs.com/)を使用して調べてください。以前の常緑樹ブラウザとの下位互換性について心配しない場合は、[このソリューションを試してください](https://stackoverflow.com/questions/12980877/parents-without-jquery-or-queryselectorall-for-parents)。 – Terry
Checkout https://sizzlejs.com/ –