javascript - ReactJS多输入问题setState和state

标签 javascript reactjs frontend

大家好,我需要帮助,如何使 editchange 不会遍历所有输入并对其进行更改。

当我在其中一个文本框中输入一个输入时,它会重复到其他输入。我是新来的,所以我在处理这个问题时遇到了麻烦。

map 正在循环中,enter image description here例如,它显示 3 个来自 api 的内容,并且将出现 3 个输入。

看图,希望对你有帮助。

handleSubmitReply(event, discussionid, classid){
        event.preventDefault();
        let userid = sessionStorage.getItem('userid');
        const {
            userAccountId,
            reply
        } = this.state;

        const postData = {
            userAccountId:userid,
            reply
        };
        let sessionToken = sessionStorage.getItem('session');
        let sessToken = sessionToken.replace(/\"/g, "");

        fetch('http://tfismartasp-001-site10.btempurl.com/api/Class/'+ classid +'/discussion/'+discussionid+'/response', {

        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            'Authorization': 'Bearer' + " " + sessToken
        },
        body: JSON.stringify(postData),
        })
        .then(response => {
            if(response.status === 400){
            return response.json();
            }else{
            this.addNotification('success', 'Success', 'All Data is Saved', 'top-right')
            this.componentDidMount();
            return response.json();
            }
        })
        .then(responseData => {
            console.log(responseData);
            return responseData;
        })
        .catch(err => {

            console.log("fetch error" + err);
        });

    }
this.handleChange = this.handleChange.bind(this);

handleChange(event) {
                event.preventDefault();
                console.log(event.target.name)
                console.log(event.target.value)
                this.setState({
                    [event.target.name]: event.target.value
                });
            };


{discussionData.map(dd => (
  <input type="text" class="form-control bg-light" placeholder="Reply" name={dd.discussion.instructions} value={this.state[dd.discussion.instructions]} onChange={this.handleChange} />
))}

这是更新后的代码,当我提交它时,我将如何处理postData“回复”。它需要填写所有字段。

如何将其序列化以发布到我的 API 中

最佳答案

event.target.name 将始终为 "reply",因为您的每个输入都有 name="reply"

为每个输入指定一个唯一的名称应该可以解决您的问题。

关于javascript - ReactJS多输入问题setState和state,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61206482/

相关文章:

html - 为什么 ul 不使用完整导航的高度?

github:即使重新加载浏览器评论也会保留,为什么?

javascript - 在 Bootstrap 中悬停打开折叠选项卡

Asp.Net Core React+Redux 教程或者什么是 React、React+Redux 和 ReactJs.net?

javascript - 保证跨浏览器兼容性的Web前端框架

javascript - 模拟 ("click")在弹出的react-create-app项目测试中不会导致重新渲染

javascript - 在 Material ui 选项卡组件中将选项卡设置为事件

javascript - ng-class 对象键中的连字符在编译期间导致语法错误...但不会破坏任何内容

javascript - 使 webpack 5 Assets 加载器与 webpack-dev-server 一起工作

javascript - 如何在文档准备好时隐藏一个 div,然后从 Javascript 动态调用它?