Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React.js中将图像切换为文本onClick_Javascript_Reactjs_React Hooks_Toggle_React Functional Component - Fatal编程技术网

Javascript 在React.js中将图像切换为文本onClick

Javascript 在React.js中将图像切换为文本onClick,javascript,reactjs,react-hooks,toggle,react-functional-component,Javascript,Reactjs,React Hooks,Toggle,React Functional Component,我一直在寻找类似的问题,但我不明白我做错了什么 我正在尝试从一张照片切换到一个文本onClick,这样当我点击照片时,文本就会显示出来,而不是图像。但是当我点击照片时,我得到了一个错误:setToggleImage不是一个函数 我几乎可以肯定我遗漏了什么,但我看不到。这是代码,在我发疯之前,如果有任何帮助,我们将不胜感激: import React, { useState } from 'react'; import Image from 'react-bootstrap/Image'; imp

我一直在寻找类似的问题,但我不明白我做错了什么

我正在尝试从一张照片切换到一个文本onClick,这样当我点击照片时,文本就会显示出来,而不是图像。但是当我点击照片时,我得到了一个错误:setToggleImage不是一个函数

我几乎可以肯定我遗漏了什么,但我看不到。这是代码,在我发疯之前,如果有任何帮助,我们将不胜感激:

import React, { useState } from 'react';
import Image from 'react-bootstrap/Image';
import profilePhoto from '../images/_MG_9807.JPG';

const contactInfo = {
    title: 'Contact: ',
    email: 'email: xxx@gmail.com',
    Github:  ' Github: ', 
    linkedin: 'linkedin: ',
};

const ImageContactDetails = () => {
    const [ toggleImage, setToggleImage ] = useState(true);

    return (
        <div>
            <div className='imageContactDetails' onClick={() => setToggleImage(!toggleImage)} > 
                { toggleImage ? <Image id='imageDetails' src={profilePhoto}   alt='professionalprofile' /> : 
                <div>   
                    <h4> {contactInfo.title} </h4>
                    <h5> {contactInfo.email} </h5>
                    <h5> {contactInfo.Github} </h5>
                    <h5> {contactInfo.linkedin} </h5>
                </div>   
                }
            </div>
            <div id='contactInfo'></div>
        </div>
    )
}
export default ImageContactDetails;
useState在数组中返回一对值,因此应该使用数组分解。应该是:

const [toggleImage, setToggleImage] = useState(true);

啊!!谢谢你把它修好。然而,在更改它之后,我仍然无法让代码正常工作。它不会向我显示错误,但不会在单击时更改。不过,警报确实有效。你有什么建议吗?太好了,如果你能分享的话,我很乐意研究一下你的代码@AOJ。我现在看到的是,您的changeToText不应该返回任何内容。我可能会完全抛弃它,在onClick中添加一个内联函数,比如onClick={=>setToggleImage!toggleImage},然后根据toggleImage的值有条件地在返回中呈现。非常感谢!这确实达到了我想要达到的目的。你不知道一旦成功我有多兴奋。我已经更新了上面的所有代码。其实不多,这就是我的全部。然而,我遇到了另一个小问题。之后:在三元运算符中,我试图调用几个段落,但这不起作用,所以我创建了变量allInformation来存储我想要使用的内容,它会打印出来,但所有内容都混在一起了。有什么建议可以把它们分成几行吗?不用担心。但是,您不能像这样插入数组。React将其转换为文本节点列表,并显示在单行上。您需要添加必要的HTML标记,我很确定h4不是正确的。可能是ul+li或dl列表?嗨,Zsolt,我没有机会回来感谢您早些时候的建议。事实上,我一开始就知道我做错了什么,这是一件非常基本的事情。我没有意识到,在react中,所有的返回都必须封装在一个根DOM元素中,其中有多个元素。我以为这只是主要的一个。代码会被更新,以防它能帮助其他人。