- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的租金详细信息编辑页面中,有一个图像上传功能,供用户更新其图像或删除以前上传的图像,这些图像是从 previousFile() 获取的,并且可以进一步添加图像。更多添加的图像通过 onDrop() 和 showFiles() 显示。我已经定义了 handleRemove() 来删除图像,但它们无法正常工作。所有图像都被删除,而不是用户想要删除的特定图像。这可能是什么原因?
代码被缩短
export default class RoomDetail extends Component{
constructor(props){
super(props);
this.state = { rooms:[], isEditing:false };
this.pk = this.props.data.pk;
}
componentDidMount(newUser){
$.ajax({
url:'/api/rentals/'+this.props.data.pk+'/',
type:'put',
contentType: "application/json",
data:JSON.stringify(newUser),
success: (data) => {
console.log('data',data);
},
error: (xhr, status, err) => {
console.error(xhr, status, err.toString());
}
});
}
componentWillMount(){
this.loadRoomFromServer();
}
loadRoomFromServer(){
$.ajax({
url:'/api/rentals/'+this.props.data.pk,
dataType:'json',
success: (data) => {
console.log('data',data);
this.setState({rooms: data});
},
error: (xhr, status, err) => {
console.error(xhr, status, err.toString());
}
});
}
handleRemove(id){
const files = this.state.rooms.gallery.slice();
this.setState({rooms:files.splice(id,1)});
}
renderRoomDetailSection(){
let url = this.pk;
let imageFile;
let firstImage;
if(this.state.rooms.gallery){
firstImage = this.state.rooms.gallery[0].image;
console.log('firstImage', firstImage);
imageFile = _.map(this.state.rooms.gallery, (image) => {
return(
<div className="col-md-3">
<img src={image.image} key={image.id} className="img-fluid img-rounded" />
</div>
);
});
}
if (this.state.isEditing ){
return(
<EditRent
ownerName={this.state.rooms.ownerName}
email = {this.state.rooms.email}
phoneNumber = {this.state.rooms.phoneNumber}
image = {this.state.rooms.gallery}
onRemove = {this.handleRemove.bind(this)}
pk={this.props.data.pk} />
)
}
return(
<div className="detailListing">
here is the rent details
</div>
)
}
renderUserAction(){
if ( this.state.isEditing ){
return(
save and cancel button is here
);
}
return(
<div className = "buttons">
edit button is here
</div>
);
}
render() {
return (
<div className = "newRoomDetail" >
{ this.renderRoomDetailSection() }
{ this.renderUserAction() }
</div>
);
}
}
var fieldValues = {
ownerName:'name',
email:'email@gmail.com',
phoneNumber:'9842333333'
}
class EditRent extends React.Component{
constructor(props,context) {
super(props,context);
this.state = {
step: 1
};
this.pk = this.props.pk;
}
saveValues(field_value) {
return function() {
fieldValues = Object.assign({}, fieldValues, field_value)
}()
}
nextStep(step) {
var step = this.state.step;
var newStep = step+1;
this.setState({step:newStep});
}
previousStep(step) {
var step = this.state.step;
var newStep = step-1
this.setState({
step : newStep
});
}
showStep() {
switch (this.state.step) {
case 1:
return <RenderPersonalInfo fieldValues={fieldValues}
ownerName={this.props.ownerName}
email={this.props.email}
phoneNumber={this.props.phoneNumber}
nextStep={this.nextStep.bind(this)}
previousStep={this.previousStep.bind(this)}
saveValues={this.saveValues.bind(this)} />
case 2:
return <RenderPhotos fieldValues={fieldValues}
image={this.props.image}
nextStep={this.nextStep.bind(this)}
previousStep={this.previousStep.bind(this)}
imageRemove={this.props.onRemove}
pk={this.props.pk} />
}
}
render() {
return (
<main className="container">
<div className="row">
<div className="col-sm-12">
<span className="progress-step">Step {this.state.step}</span>
</div>
</div>
<div className="container">
<div className="row">
{this.showStep()}
</div>
</div>
</main>
)
}
};
let image = [];
class RenderPhotos extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
files: []
};
}
handleClick(image){
this.props.imageRemove(image);
}
onDrop(files) {
console.log('Received files: ', files);
this.setState({
files: files
});
image = new FormData(files);
$.each(files,function(i,file){
image.append('image',file);
});
}
previousFile(){
return(
<ul className="gallery">
{
_.map(this.props.image, (image,idx) => {
return(
<li className="col-md-3" key={idx}>
<span className="remove"><i onClick= onClick= {this.handleClick.bind(this,image)} className = "fa fa-times" aria-hidden="true"></i></span>
<img src={image.image} key={image.id} className="img-fluid img-rounded" />
</li>
)
})
}
</ul>
)
}
showFiles() {
const { files } = this.state;
if (!files.length) {
return null;
}
return (
<div>
<h3>Dropped files: </h3>
<ul className="gallery">
{
_.map(files, (file, idx) => {
return (
<li className="col-md-3" key={idx}>
<img src={file.preview} width={200}/>
<div>{file.name}</div>
</li>
)
})
}
</ul>
</div>
);
}
render() {
return (
<div>
<div className="col-md-12">
<form method="POST" encType="multipart/form-data">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}"/>
<Dropzone onDrop={this.onDrop.bind(this)}
style={style}
activeStyle={activeStyle}
accept="image/*">
Try dropping some files here, or click to select files to upload.
</Dropzone>
</form>
{ this.previousFile() }
{ this.showFiles() }
</div>
<div className="row continueBtn text-right">
<button className="btn how-it-works pull-left" onClick={this.props.previousStep.bind(this)}><i className="fa fa-hand-o-left"></i></button>
<button className="btn how-it-works pull-right" onClick={this.nextStep.bind(this)}><i className="fa fa-floppy-o"></i></button>
</div>
</div>
);
}
}
删除 RenderPhotos 组件中的部分。
最佳答案
这里的问题是,您尝试通过将来自 Prop (previousFile)的图像设置为本地状态来删除它们。如果您从本地状态渲染图像,那么这种方法是可行的,但您所做的是直接从 props 渲染,这将导致 React 看不到任何变化。要使图像删除起作用,您需要将删除逻辑移至父组件,并为子组件提供触发删除的函数。
class Parent extends Component {
constructor() {
this.state = {
files: []
};
}
handleRemove(id) {
const files = this.state.files.slice();
this.seState({
files: files.splice(id, 1)
});
}
render() {
return <Files files={this.state.files} onRemove={this.handleRemove.bind(this)} />;
}
}
function handleClick(id, props) {
props.handleRemove(id);
}
function Files(props) {
return (
<ul>
{props.files.map(
(file, key) => <li key={key} onClick={handleClick.bind(this, key, props)}>{file.name}</li>
)}
</ul>
);
}
关于javascript - 所有图像都会被删除,而不是在reactjs中单击删除图标的特定图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37176267/
我知道如何通过iPhone开发创建sqlite数据库、向其中插入数据、删除行等,但我试图以编程方式删除整个数据库本身,但没有得到任何帮助。请有人指导我如何通过代码从设备中删除/删除整个 sqlite
请帮助指导如何在 Teradata 中删除数据库。 当我运行命令DROP DATABASE database_name时,我收到错误消息: *** Failure 3552 Cannot DROP d
Azure 警报规则的删除命令似乎不起作用,尝试了下面的方法,它返回状态为无内容,并且警报未被删除 使用的命令Remove-AzAlertRule -ResourceGroup "RGName"-Na
我在 flex 搜索中为大约50000个视频建立了索引,但是当它达到52000左右时,所有数据都被删除。嗯,这对我来说真的很奇怪,我没有为ES设置任何Heap大小或最小或最大大小的内存大小,因此它们没
我正在处理的问题是表单错误“输入由字母、数字、下划线或连字符组成的有效‘slug’。” 以下是我的表单字段验证: def clean_slug(self): slug = self.c
阅读文档,我希望 $("#wrap2").remove(".error") 从 中删除所有 .error 元素#wrap2。然而看看这个 JSFiddle: http://jsfiddle.net/h
嗨,我第一次尝试发现 laravel 我从 laravel 4.2 开始,我刚刚创建了一个新项目,但我误以为我写了这样的命令行 composer create-project laravel/lara
我已经在网上搜索了很长一段时间,但我找不到如何完全删除 apache 2.4 。 使用: Windows 7 c:\apache24\ 我已经尝试了所有命令,但没有任何效果。 httpd -k shu
可能是一个简单的答案,所以提前道歉(最少的编码经验)。 我正在尝试从任何列中删除具有特定字符串(经济 7)的任何行,并且一直在尝试离开此线程: How to drop rows from pandas
有几种方法可以删除/移除 vector 中的项目。 我有一个指针 vector ,我需要在类的析构函数中删除所有指针。 什么是最有效/最快甚至最安全的方式? // 1º std::for_each(v
我安装了一个 VNC 服务器并在某处阅读了我必须安装 xinetd 的信息。稍后我决定删除 VNC 服务器,所以我也删除了 xinetd。似乎 xinetd 删除了一些与 plesk 相关的文件,如果
我制作了一个从我们的服务器下载视频的应用。问题是: 当我取消下载时,我打电话: myAsyncTask.cancel(true) 我注意到,myAsyncTask 并没有在调用取消时停止...我的 P
是否可以在使用DELETE_MODEL删除模型之前检查模型是否存在我试图避免在尝试删除尚未创建的模型时收到错误消息。基本上我正在寻找对应的: DROP TABLE IF EXISTS 但对于模型。 最
我已经有了这个代码: 但它仍然会生成一个表行条目。 我想做的是,当输入的数量为0时,表行将被删除。请耐心等待,因为我是 php 和 mySQL 编码新手。 最佳答案 您忘记执行查询。应该是 $que
在 SharePoint 中,如果您删除/修改重复日历条目的单次出现,则不会真正删除/修改任何内容 - 相反,会创建一个新条目,告诉 SP 对于特定日期,该事件不存在或具有新参数. 因此,这可以通过删
在 routes.php 中我有以下路由: Route::post('dropzone', ['as' => 'dropzone.upload', 'uses' => 'AdminPhotoContr
在我的应用程序中,我正在尝试删除产品。当我第一次删除产品时,它会成功并且 URL 更改为/remove_category/15。我正在渲染到同一页面。现在,当我尝试删除另一个产品时,网址更改为/rem
这个问题被问了很多次,但给出的答案都是 GNU sed 特定的。 sed -i '' "/${FIND}/,+2d""$FILE" 给出“预期的上下文地址”错误。 有人可以给我一个例子,说明如何使用
在使用 V3 API 时,我找不到任何方法来删除和清理 Google map 。 我已经在 AJAX 站点中运行它,所以我想完全关闭它而无需重新加载页面。 我希望有一个 .unload() 或 .de
是否可以创建一个 Azure SQL 数据库用户来执行以下操作: 针对所有表和 View 进行 SELECT 创建/更改/删除 View 但用户不应该不拥有以下权限: 针对任何表或 View 插入/更
我是一名优秀的程序员,十分优秀!