0

ReactDOM.findDOMNode(this) の子を取得して、参照に基づいてスタイルを設定できるようにします。具体的には、一部の参照を表示せず、他の参照を表示します。

できると思った

blockNode = ReactDOM.findDOMNode(this).children

React.Children.map(blockNode, function(el) {
    console.log('el ',el);
})

エラー応答:

invariant.js:39 Uncaught Invariant Violation: Objects are not valid as a React child (found: [object HTMLDivElement]). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons.

PSまた、 createFragment() で blockNode をラップしようとしましたが、うまくいきませんでした

4

1 に答える 1

0

同じ機能の回避策を見つけました。私は別の方法で問題に取り組みましたが、おそらくこれは、文字列またはオブジェクトを広範囲にフィルタリングして、複数の参照に基づいて変更しようとしていた配列に変換するのではなく、より慣用的な反応です。その文の後半の一口を考えると、これが物事を行うための反応的な方法であると思います。

フォーカスして参照を操作する代わりに、状態にアタッチし、レンダリングで toggleDisplay 関数を記述してインラインで動的にスタイルを設定しました。

クレジットはこちら

render (){
    var toggleDisplayFocus = function(stateVal) {
    var displayOrNo = stateVal ? "block" : "none";
    return {
       display: displayOrNo
    }
    }

    return (
    <div style={toggleDisplayFocus(this.state.synthFocusDisplay)}>
    contents of div
    </div>
    )
}

PS私が間違っていて、reactまたはreact-dom APIを使用する本当に良い方法がある場合は、お気軽にどうぞ。あなたの答えを最良のものとして選択します。

于 2016-02-21T16:41:14.110 に答える