クール。私はそれがあなたのために働いてうれしいです。
@RobMは(いつも)良い答えをあなたに提供しましたが、別の選択肢があります。
まず、カルト形式で機能を保持する必要はありません。これはユーザ定義のプロシージャなので、タプルを取るほうが良い場合には、そうすることができます!それを&hellipと同じくらい簡単に変換できます。 †あなたは
// curried form
getIntervals (30) (availability)
// changes to
getIntervals(30, availability)
それを呼び出すとき
// curried form
const getIntervals = n=> availability=> { ... }
// uncurried form
const getIntervals = (n,availability)=> { ... }
は、それから私は、一般的にカリー化形式で関数を定義しますが、それは決してあなたが従わなければならない要件です。洗練されていない形式では、Reactコンポーネントに…というように直接定義することができます。
class Example extends Component
getIntervals (n,availability) {
// ...
}
}
それともgetIntervals
は、一般的な、純粋な関数であるため、コンポーネント内のすべてのコードを埋め込むする理由はありません。
// curried
const getIntervals = n=> availability=> { ... }
// or choose uncurried
const getIntervals = (n,availability)=> { ... }
// call it from withint the class
class Example extends Component
getIntervals (availability) {
return getIntervals (this.props.intervalLength, availability)
}
}
また、ラッパー機能をまったく持たないこともあります。戻り値は、イベントハンドラやいくつかの状態の突然変異のように、他の方法で使用される可能性が高い …
const getIntervals = (n,availability) => { ... }
class Example extends Component {
// constructor ...
onclick (event) {
let intervals = getIntervals(this.props.intervalLength, this.state.availability)
// do something with intervals
console.log(intervals)
}
render() {
return <button onClick={e=> onclick(e)}>show intervals</button>
}
}
今すぐgetIntervals
は、このファイルをすべて残すことができます。あなたはutils.jsにドロップし、それが
import {getIntervals} from './utils'
class Example extends Component {
onclick (event) {
let intervals = getIntervals(this.props.intervalLength, this.state.availability)
// ...
}
// ...
}
私は例としてthis.props.intervalLength
とthis.state.availability
を使用するインポートできます。私は実際には、これらの2つの値がどのようにコンポーネントに関連付けられているかはわかりません。私が去ることまであなたに^ _^uncurried手順にカレーから
†変換は、一般的に簡単ですが、あなたはカリー化手順は、再帰的な1 —ある場合に注意する必要があり、その場合、あなたの」 dは再帰呼び出しを更新する必要もあります。
私はgetIntervals
を書き、変換は、この特定のシナリオ
にES7は、プロパティ初期化子を持たないシンプルなので、私は脚注として、このままにしておきます。あなたは[この提案](https://jeffmo.github.io/es-class-public-fields/)について話していますか? –