自定义控件的回调函数更改ListView数据时无法触发重绘



  • -------UPDATE-------

    已经解决

    问题在于当DataSource内的数据是Object时,直接修改其内部的property无法触发其重绘

    解决方案是创建新的object,并修改发生改变的property,然后再重新赋给DataSource,而非直接修改原有的object

    -------UPDATE END-------

    我在页面里引用了自定义的ListCards控件,该控件用于绘制各行数据

    父页面的代码,第48行是每行的绘制方法,当获取到子控件返回的参数时会调用24行的函数,再用第32行对DataSource数据更新
    0_1496309596525_WX20170601-173034.png

    下面是ListCards的具体实现,当点击按钮时,23行的函数会响应,并在25行将参数返回给父控件
    0_1496309604531_WX20170601-173117.png

    预期的显示结果应该是两个红色按钮,并分别显示数字11和12。
    点击第一个按钮会让第二个按钮变为绿色,其显示数字变为100。

    在调试时候发现点击按钮后,父控件执行到31行时,确实更新了this.data的数据
    在32行时也更新了this.state.dataSource._dataBlob.s1的值
    但是却始终没有触发相应行的重绘


登录后回复