Слияние кода завершено, страница обновится автоматически
order | title | ||||
---|---|---|---|---|---|
5 |
|
支持在裁剪区域设置想要的渲染样式
You can render the crop area what you want.
import { ImageCrop, Button, Row, Col, Avatar } from 'choerodon-ui';
import { useState, useCallback } from 'react';
const avatarRender = (src) => {
const prefix = `c7n-image-crop`;
const avatarList = [{
src,
size: 80,
icon: "person",
text: "80×80",
}, {
src,
size: 40,
icon: "person",
text: "40×40",
}, {
src,
size: 20,
icon: "person",
text: "20×20",
}]
return (
src ? avatarList.map(
// eslint-disable-next-line react/jsx-key
itemProps => (
<Row key={itemProps.text} className={`${prefix}-avatar-row`} type="flex" justify="center" align="top">
<Col key="image" span={24} className={`${prefix}-avatar-col`}>
<Avatar {...itemProps} />
</Col>
<Col key="text" span={24} className={`${prefix}-avatar-col`}>
<span>{itemProps.text}</span>
</Col>
</Row>
),
) : null
)
}
const Demo = () => {
const [visable, setVisiable] = useState(false);
const [srcCrop, setSrcCrop] = useState('');
const handleClick = useCallback(() => {
setVisiable(true)
}, [])
const handleOk = useCallback(({ url, blob }) => {
console.log(url, blob);
setVisiable(false);
}, [])
const handleCancel = useCallback(() => {
setVisiable(false);
console.log('close')
}, [])
const handleCropComplete = useCallback(({ url }) => {
setSrcCrop(url)
}, [])
const renderCrop = (Crop) => {
return (
<Row className="c7n-image-crop-crop-content" gutter={8}>
<Col key="crop" span={18} >
{Crop}
</Col>
<Col className="c7n-image-crop-avatar-content" key="avatar" span={6}>
<h5>预览头像</h5>
{avatarRender(srcCrop)}
</Col>
</Row>
)
}
return (
<>
<Button onClick={handleClick} funcType="raised">查看头像</Button>
<ImageCrop
modalWidth={800}
cropContent={renderCrop}
onCropComplete={handleCropComplete}
modalVisible={visable}
onOk={handleOk}
onCancel={handleCancel}
src='https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
rotate
zoom
grid
aspect={1 / 1}
/>
</>
)
}
ReactDOM.render(
<Demo />,
mountNode,
);
.c7n-image-crop-avatar-content h5 {
margin-bottom: 24px;
font-size: 18px;
text-align: center;
}
.c7n-image-crop-avatar-content .c7n-image-crop-avatar-row {
margin-top: .6rem;
}
.c7n-image-crop-avatar-content .c7n-image-crop-avatar-col {
text-align: center;
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )