मैं एक MobX के अवलोकन योग्य सरणी के साथ मूल निवासी प्रतिक्रिया में एक सूची दृश्य को पॉप्युलेट करने की कोशिश कर रहा हूं:

constructor(props) {
        super(props)
        var dataSource = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
        let dogs = props.store.dogs;
        this.state = { dogs: dogs, dataSource: dataSource };
    }

    render() {

        var dogs = this.state.dogs;
        var dataSource = this.state.dataSource.cloneWithRows(dogs);

        return <ListView
            dataSource={dataSource}
            renderRow={this.renderRow}
            />
    }

लेकिन कोड चलाते समय, renderRow() कभी कॉल नहीं किया जाता है। यह क्लोनविथरो () विधि की तरह पंक्तियों को क्लोन करने का तरीका नहीं जानता था।

क्या कोई ऐसा करने में सफल हुआ है? (और यह भी व्यवहार करने के लिए कि जब कुत्तों की सूची में कुत्ते का नाम बदलता है, तो सूची में सेल फिर से प्रस्तुत होगा)

अद्यतन: अधिक जानकारी यहाँ https://github.com/mobxjs/mobx/issues/476

5
Yaron Levi 22 अगस्त 2016, 01:02

1 उत्तर

सबसे बढ़िया उत्तर

अगर मुझे सही से याद है तो आपको कुत्तों (एलओएल) dogs.slice() को काटने की जरूरत है अन्यथा ListView इसे उचित सरणी के रूप में नहीं पहचान पाएगा। ऐसा हो सकता है कि renderRow द्वारा प्रस्तुत किए गए घटक को एक पर्यवेक्षक घटक भी होना चाहिए, क्योंकि इसे अतुल्यकालिक रूप से लागू किया जा सकता है।

ध्यान दें कि स्लाइसिंग render विधि में की जानी चाहिए न कि कंस्ट्रक्टर में; आप चाहते हैं कि यह हर बार हो जब संग्रह बदलता है, और न केवल जब घटक का निर्माण किया जाता है।

यह भी देखें: https://github.com/mobxjs/mobx/issues/476

1
mweststrate 23 अगस्त 2016, 18:23