【发布时间】:2017-06-15 19:55:46
【问题描述】:
我正在尝试在我的react-data-grid 中实现固定列。
我通过添加locked: true 来关注example,但它不起作用,所以我也尝试使用呈现的自定义行,例如other example。
我收到_this.refs[i].setScrollLeft is not a function 错误。尝试在 this same question 上发表评论对我也不起作用(抱歉,没有足够的代表发表评论!)。
我也试过create a custom cell render class,但还是没有运气。
我也尝试改用refs回调方式:
class CellRenderer extends React.Component {
render() {
return <ReactDataGrid.Cell {...this.props}/>
}
};
class RowRenderer extends React.Component {
static propTypes = {
idx: React.PropTypes.string.isRequired
};
setScrollLeft = (scrollBy) => {
// if you want freeze columns to work, you need to make sure you implement this as apass through
this.row.setScrollLeft(scrollBy);
};
getRowStyle = () => {
return {
color: this.getRowBackground()
};
};
getRowBackground = () => {
return this.props.idx % 2 ? 'green' : 'blue';
};
render() {return (<div style={this.getRowStyle()}>
<ReactDataGrid.Row
{...this.props}
ref={r => { this.row = r; }}
cellRenderer={CellRenderer}
/>
</div>);
}
};
非常感谢任何帮助!
编辑:尝试了很多事情,仍然没有运气,但我发现 setScrollLeft 方法永远不会传递给 Row 组件,所以也许它确实是 refs 和/或 props 传递的问题.
【问题讨论】:
-
在将 ref 设置为回调之前,您给 ref 起了什么名字?
-
对不起,我不明白这个问题。
RowRenderer是一个有状态的组件,所以我认为使用ref={r => { this.row = r; }}就足够了,所以我可以调用this.row.setScrollLeft(scrollBy);,不是吗?
标签: javascript reactjs react-data-grid