我想基于一些计算以编程方式设置容器的宽度和高度。
我正在尝试设置我为componentDidUpdate()中的元素创建的引用的样式,但没有效果
export default class CanvasOverlay extends React.Component {
static propTypes = {
imageURI : PropTypes.string.isRequired,
};
constructor(props) {
super(props);
this.width = 0;
this.height = 0;
this.canvasOverlay = React.createRef();
}
componentDidMount() {
let image = new Image();
let that = this;
image.onload = function() {
that._updateDimension(image.width, image.height);
};
image.src = this.props.imageURI;
}
_updateDimension(imageWidth, imageHeight) {
const canvasOverlay = this.canvasOverlay.current;
//Ideally there should be some calculations to get width and
height
canvasOverlay.style.width = 480;
canvasOverlay.style.height = 400;
}
render() {
return(
<div ref={this.canvasOverlay}>
<Canvas imageURI={this.props.imageURI}/>
</div>
);
}
}
HTML元素canvasOverlay应该已调整大小,但尚未调整
答案 0 :(得分:2)
元素的style.width
和style.height
不接受带有类型编号的值,因此您应将其转换为字符串并添加一个'px'
单位。
element.style.width = `${width}px`;
// or
element.style.width = width + 'px';
答案 1 :(得分:1)
我在代码中看到两个问题。
以下是关于React组件生命周期的很好的解释:https://medium.com/@nancydo7/understanding-react-16-4-component-lifecycle-methods-e376710e5157
这是具有给定代码的有效POC: https://stackblitz.com/edit/react-hosymf?file=CanvasOverlay.js