反応コードに再選択を追加しようとしていますが、常に再レンダリングされているようです。常に再レンダリングを再選択してください
私の状態を変更するたびに、入力セレクタが変更されていなくても、コンソールは「テスト」を表示します。私はあなたに何が起こっているかを示す簡単なテストを作成しました。
import { connect } from 'react-redux'
import { createSelector } from 'reselect'
window.testObject = {'x': '5'}
const mapStateToProps = (state, props) => {
const test = state => {return window.testObject}
const getTest = createSelector(test, (t)=> console.log('testing'))
return {
test: getTest(state),
}
}
export default const TestContainer = connect(
mapStateToProps,
)(TestBase)
何が間違っていますか?私はドキュメントを読んだり、input-selectorが変更されていないので、初めてconsole.logを実行してはいけないと言うことができます。私はそれを正しく理解していますか?
私は考えていないの
createSelector
外は 'reselect'が深い比較を行い、再レンダリングします。 'getTest'が呼び出されるたびに、新しいオブジェクトが返されます。 –あなたは正しいです、それを実現する必要があります。オブジェクトをグローバルにして、それが動作するかどうかを調べるつもりです:) –
グローバルオブジェクトを使用するようにサンプルを更新しました。それでも同じように "テスト"が表示されます –