这是react 代码

import React, { useRef, useState, useEffect } from 'react';
import "./User.css"
export default function User() {

    const objArray = [
        {
            class: "fa fa-envelope",
            title: "Gmail",
            color: "red"
        },
        {
            class: "fa fa-facebook",
            title: "Facebook",
            color: "blue"
        },
        {
            class: "fa fa-instagram",
            title: "Instagram",
            color: "#E4405F"
        },
    ];

    const link = useRef(null);


    //  * saving data a firebase;

    const handleSave = (className, title, color) => {
        const newLink = link.current.value;
        console.log("this is -> ", className, title, color, newLink);
    };
    return (
        <main className="User_main">

            <h1>~ Customization ~</h1>
            <h2>Profile Section</h2>
            <br />
            <h2 style={{ marginBottom: "0px" }} > ~ Add Social Media Icons ~ </h2>
            <small>Click and add the social media links</small>
            <br /><br />
            <div className="socialIcons">

                {
                    objArray.map((e) => {
                        return (
                            <>
                                <div>
                                    <i style={{ color: `${e.color}`, border: "1px solid " }} className={e.class} />
                                    <h4>{e.title}</h4>
                                    <input ref={link} placeholder="Enter link here" type="url" />
                                    <br />
                                    <button onClick={() => { handleSave(e.class, e.title, e.color) }}>Save</button>
                                </div>
                            </>
                        )
                    })
                }

            </div>
        </main>
    )
}

在此代码console.log("this is -> ", className, title, color, newLink)中,newLink为空.

我怎么才能解决这个问题呢?

推荐答案

根据objArray的内容显示的所有输入都使用相同的link.

因此,从逻辑上讲,它只会提到最后一个.

因此,它将始终打印出Instagram input的值.

阅读官方文件中的How to manage a list of refs using a ref callback,了解如何处理这一特定情况.

Reactjs相关问答推荐

无法在jest中发布行动

Redux向后端发送请求时出现钩子问题

通过单击具有此值的按钮将值添加到数组对象键

将对象添加到集合中的数组时的no_id字段

NextJS如何正确保存添加到购物车中的产品会话

如何使图像zoom 并移动到点击点

react ';S使用状态不设置新状态

MERN,将动态列表中的元素插入数组

为什么在 React 的 useEffect 中使用 onAuthStateChanged ?

当 React 中的状态发生变化时如何停止重新加载谷歌 map ?

在react 中从外部 api 渲染列表

Cypress 组件测试不渲染react 组件(但它的内容)

如何在 React Native 中更新跨屏幕呈现的上下文状态变量?

null 不是对象(判断RNSound.IsAndroid)

动态添加或删除文本输入字段并将值设置为 React JS 中主要状态的数组

React Final Form - 单选按钮在 FieldArray 中不起作用

如何通过onpress on view in react native flatlist来降低和增加特定视图的高度?

父状态改变后子组件丢失状态

网格项不缩小以适应包含的可滚动列表

单击按钮时获取react 表中每一行的属性