javascript - setAttribute onClick 函数 - React JS

标签 javascript html reactjs jsx

我有 2 个函数 - addBookmark() 和 removeBookmark。

我有可用的 IsBookmakred ,它是真的还是假的。我的 JSX 包含书签的一部分是:

  {props.singleCompany.IsBookmarked ? (
      <div>
        <span
          className="fa fa-star bookmarked"
          onClick={removeBookmark}
          data-tip="Remove Bookmark"
        ></span>
        <ReactTooltip />
      </div>
    ) : (
      <div>
        <span
          className="fa fa-star"
          onClick={addBookmark}
          data-tip="Add Bookmark"
        ></span>
        <ReactTooltip />
      </div>
    )}

如您所见,我根据情况使用了 addBookmark 和 removeBookmark 这两个函数。如果书签是 true 或 false(单击时),我需要能够更改此属性。这是我的函数 1,例如没有 POST 请求:

    const addBookmark = e => {
    console.log(e.target);
    const data = {
      userGuid: sessionStorage.getItem("Guid"),

      smallPlanID: props.singleCompany.SmallCompanyPlanID,

      largePlanID: props.singleCompany.LargeCompanyPlanID
    };
    e.target.classList.add("bookmarked");
    e.target.onclick = removeBookmark();

    //POST REQUEST IS HERE...
  };

如您所见,e.target.onclick = removeBookmark();这不是我想要的东西。这只是为了展示我的想法将会发生什么。我尝试过:

e.target('onclick','doSomething();');

也有,但没有成功。我应该如何更改 onClick 属性以指向其他函数?

最佳答案

您可以创建一个状态 isBookmarked 并按如下方式使用它:

const [isBookmarked, setIsBookmarked] = useState(props.singleCompany.IsBookmarked);

const addBookmark = e => {
  ...
  setIsBookmarked(!isBookmarked)
}

const removeBookmark = e => {
  ...
  setIsBookmarked(!isBookmarked)
}

...
<div>
  <span
    className=`fa fa-star ${isBookmarked ? 'bookmarked' : ''}`
    onClick={isBookmarked ? removeBookmark : addBookmark}
    data-tip={isBookmarked ? 'Remove Bookmark' : 'Add Bookmark'}
  ></span>
  <ReactTooltip />
</div>

关于javascript - setAttribute onClick 函数 - React JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59859220/

相关文章:

javascript - 我是否采用了正确的方法来使用 jQuery 创建下拉列表?

javascript - 使用 css 和图片打开新窗口

javascript - React Native - 如何在多个按钮上应用 Prop

reactjs - React - 传递没有值的 prop

javascript - 如何动态分组每个 n-div 并在 JQuery 中用一个新的 div 包装?

javascript - 对 flask render_template 进行 AJAX 调用的问题

javascript - parentNode 在 Firefox 中返回一个 window 对象,在 Chrome 中返回一个 div 对象

javascript - extjs 树面板中的滚动条不起作用

javascript - 使用淡出扩展文本部分

javascript - 如何在 React Native 中更新子组件 onPress 的样式